我正在使用以下方法呼叫 API:
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync(path);
String content = await response.Content.ReadAsStringAsync();
回傳content的是以下 Json:
{
"sensors": [
{ "value": "1.2", "valid": "true" },
{ "value": "1.1", "valid": "false" },
{ "value": "1.7", "valid": "true" }
]
}
例如,我需要將所有傳感器的值相加valid等于true。
我可以轉換content為物件串列并在不為該型別定義類的情況下對其進行查詢嗎?
uj5u.com熱心網友回復:
如果您正在尋找“完全做到這一點”的非常臟的代碼,那么它是:
// use package System.Text.Json
var sum = JsonObject.Parse(json)["sensors"].AsArray().OfType<JsonObject>().Where(x => x["valid"].GetValue<string>() == "true").Sum(x => double.Parse(x["value"].GetValue<string>()));
但是,如果您打算在您正在處理的代碼上進行更多作業,請聽取其他建議創建一個 C# 類Sensors和另一個 forSensorValue并簡單地反序列化它的評論。
從 JSON 的形狀來看,似乎不會有大量資料或性能至關重要。然后將 JSON 反序列化為某些類并處理這些物件而不用瘋狂地使用普通的 JSON 結構會更有意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/461414.html
標籤:C# asp.net 核心 dotnet-httpclient .net-6.0
