将 Json 转换为对象列表

Convert Json to List of Object

我正在调用 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 转换为对象列表并在不为类型定义 class 的情况下查询它吗?

如果您正在寻找“完全做到这一点”的真正脏代码,那么这里是:

// 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>()));

但是如果您打算在您正在处理的这段代码上做更多的工作,请听取其他建议为 Sensors 创建一个 C# class 和另一个为 SensorValue 和简单地反序列化它。

从JSON的形状来看,似乎不会有大量数据或性能很关键。然后将 JSON 反序列化为一些 classes 并在没有普通 JSON 结构的情况下处理这些对象更有意义。