这是我的Json:
{
"coord": {
"lon": -0.13,
"lat": 51.51
},
"weather": [{
"id": 520,
"main": "Rain",
"description": "light intensity shower rain",
"icon": "09d"
}],
"base": "stations",
"main": {
"temp": 289.42,
"pressure": 1008,
"humidity": 55,
"temp_min": 287.15,
"temp_max": 291.15
},
"visibility": 10000,
"wind": {
"speed": 4.1,
"deg": 340
},
"rain": {
"1h": 4.32
},
"clouds": {
"all": 40
},
"dt": 1463937214,
"sys": {
"type": 1,
"id": 5091,
"message": 0.0474,
"country": "GB",
"sunrise": 1463889474,
"sunset": 1463947050
},
"id": 2643743,
"name": "London",
"cod": 200
}
我想将其反序列化为天气报告类。我只对这部分数据感兴趣。
"main":{"temp":289.42,"pressure":1008,"humidity":55,"temp_min":287.15,"temp_max":291.15}
所以我想创建一个类似下面的类
class weather
{
var temp,pressure,humidity,..
}
有人可以告诉我如何在这里使用DeserializeObject吗?
答案 0 :(得分:1)
使用json.net。 http://www.newtonsoft.com/
以下是如何仅反序列化所需的部分。基本上,类需要包含您想要使用的唯一属性,并且它们必须与json变量匹配。
var definition = new { temp = "" };
var weatherReport = JsonConvert.DeserializeAnonymousType(yourString, definition);
答案 1 :(得分:0)
如果您是提供返回引用的JSON响应的服务的人,我强烈建议您编辑响应以仅为您提供所需的数据。这不仅会减少每个请求的数据/时间,还会使客户端上的处理效率更高。但是,如果这不是一个选项,我相信您可以使用this link来了解如何根据需要获取JSON响应的特定值。
然而,另一个选择是简单地反序列化整个对象并获取所需的数据,因为除非JSON非常大,否则获取特定部分与整个对象之间的性能差异并不显着。