如何在.Net中解析这个JSON的特定数据?

时间:2016-05-22 18:06:02

标签: .net json asp.net-mvc

这是我的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吗?

2 个答案:

答案 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非常大,否则获取特定部分与整个对象之间的性能差异并不显着。