gpt4 book ai didi

C# : extract/retrieve child node from JSON structure

转载 作者:太空狗 更新时间:2023-10-30 00:01:23 26 4
gpt4 key购买 nike

我们如何在 C# 中从 JSON 结构中提取或检索子节点值。

我的应用正在使用 OpenWeatherMap ,我需要从 city 检索 name,从 list 检索 temp description 来自 weather 节点,我的 JSON 和 Class 结构在下面

{
"cod": "200",
"message": 0.0284,
"city": {
"id": 2643743,
"name": "London",
"coord": {
"lon": -0.12574,
"lat": 51.50853
},
"country": "GB",
"population": 0,
"sys": {
"population": 0
}
},
"cnt": 1,
"list": [
{
"dt": 1429268400,
"temp": {
"day": 12.21,
"min": 4.86,
"max": 13.18,
"night": 4.86,
"eve": 11.76,
"morn": 12.21
},
"pressure": 1028.8,
"humidity": 66,
"weather": [
{
"id": 803,
"main": "Clouds",
"description": "broken clouds",
"icon": "04d"
}
],
"speed": 5.9,
"deg": 67,
"clouds": 80
}
]
}

C# 类

public class WeatherForeCast
{
public string City { get; set; }
public decimal Day { get; set; }
public decimal Min { get; set; }
public decimal Max { get; set; }
public decimal Night { get; set; }
public string Description { get; set; }
}

到目前为止,我熟悉使用 JSON.net 将 C# 对象序列化和反序列化为具有完全相同结构的 JSON。

最佳答案

如果您只想填充 WeatherForecast 的实例,您可以在普通 JObject 上使用一些 SelectToken 调用:

var parsed = JObject.Parse(json);
var forecast = new WeatherForeCast();

forecast.City = parsed.SelectToken("city.name").Value<string>();
forecast.Day = parsed.SelectToken("list[0].temp.day").Value<decimal>();
forecast.Description = parsed.SelectToken("list[0].weather[0].description").Value<string>();
forecast.Min = parsed.SelectToken("list[0].temp.min").Value<decimal>();
forecast.Max = parsed.SelectToken("list[0].temp.max").Value<decimal>();
forecast.Night = parsed.SelectToken("list[0].temp.night").Value<decimal>();

请注意,虽然这非常脆弱,但它对 JSON 的内容做出了假设。如果 JSON 发生变化,SelectToken 中各种属性的路径将不正确,此代码将抛出异常。

关于C# : extract/retrieve child node from JSON structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29702616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com