从API我收到一个如下所示的JSON对象:
{
"wind" : {
"speed" : 7.31,
"deg" : 187.002
},
"rain" : {
"3h" : 0
},
"clouds" : {
"all" : 92
},
"coord" : {
"lon" : 139,
"lat" : 35
},
"dt" : 1369824698,
"id" : 1851632,
"cod" : 200,
"weather" : [
{
"id" : 804,
"main" : "clouds",
"icon" : "04n",
"description" : "overcast clouds"
}
],
"main" : {
"humidity" : 89,
"temp_max" : 292.04,
"temp_min" : 287.04,
"temp" : 289.5,
"pressure" : 1013
},
"sys" : {
"country" : "JP",
"sunrise" : 1369769524,
"sunset" : 1369821049
},
"name" : "Shuzenji"
}
我想将两个值分配给我的班级:
public class Weather {
public string Name { get; set; }
public string Temp { get; set; }
}
我可以这样指定名称:
weather.Name = TheJSON.name.ToString();
但是温度比较棘手,因为它嵌套在“主”阵列中。我已经看过许多关于如何在Javascript中执行此操作的示例,但在C#中没有这么多。谢谢!
答案 0 :(得分:1)
使用JSON数据的最简单方法是将它们反序列化为C#对象,并直接在应用程序中使用它们。您可以使用JSON C# Class Generator之类的工具从JSON数据中自动生成C#类。生成C#类后,可以使用JsonConvert.DeserializeObject(jsonText)反序列化JSON字符串;生成的代码需要Newtonsoft Json.NET,您可以轻松添加NuGet package。
如果将JSON内容保存在D:\ test.json中,则可以使用以下代码使用生成的C#对象访问值。以下示例仅为您提供有关使用情况的信息。
var json = File.ReadAllText(@"D:\test.json");
var weather = JsonConvert.DeserializeObject<Weather>(json);
Console.WriteLine(weather.Name);
Console.WriteLine(weather.Sys.Country);
答案 1 :(得分:1)
Main不是数组。这是一个对象,所以
TheJSON.main.temp.ToString()