C# 解析来自Wunderground的JSON预测数据

C# 解析来自Wunderground的JSON预测数据,c#,json,parsing,wunderground,C#,Json,Parsing,Wunderground,我正在向Wunderground服务查询10天预测,我需要解析数据。使用类creator-like然后访问RootObject的方法是可行的,但并不可取。我需要的是一个简单的令牌解析,但是,我不知道如何处理复杂的JSON结构。例如,如何从这样的嵌套响应中提取工作日和温度(使用C#): 您的第一个任务是选择JSON序列化程序。我的偏好是,但也有很多其他的。您的里程可能会有所不同 下一个任务是创建一个与输出匹配的C#类。完成后,您就可以轻松地反序列化了 在ServiceStack中,这是一个简单的例

我正在向Wunderground服务查询10天预测,我需要解析数据。使用类creator-like然后访问RootObject的方法是可行的,但并不可取。我需要的是一个简单的令牌解析,但是,我不知道如何处理复杂的JSON结构。例如,如何从这样的嵌套响应中提取工作日和温度(使用C#):


您的第一个任务是选择JSON序列化程序。我的偏好是,但也有很多其他的。您的里程可能会有所不同

下一个任务是创建一个与输出匹配的C#类。完成后,您就可以轻松地反序列化了

在ServiceStack中,这是一个简单的例子:

string json = @"<what you have above>";
MyPoco = json.FromJson<MyPoco>(json);
stringjson=@”;
MyPoco=json.FromJson(json);
通过使用,我能够很好地了解此响应的结构。答案很简单,以摄氏度为单位获取第一天的预测温度很简单:

string tempCelsius = (string)jsonObject.SelectToken("forecast.simpleforecast.forecastday[0].high.celsius"); 

使用一个好的工具来可视化JSON结构是关键。

问题在于我无法序列化为对象。我需要一个类型为(string)jsonObject.SelectToken(“current_observation.weather”)的解决方案,就像在简单观察响应中一样。@eYe,为什么不能序列化到对象?这是一个特定的要求,以避免在API更改时必须重新生成大量代码:(@eYe,当API发生变化时,你需要通过树访问特定令牌的要求也会被打破。无论哪种方式,这种方式都更容易。如果API发生变化,就必须在某个地方进行更改。如果你处理的是C#对象,而不是一些也会被打破的任意树,这很容易。我完全同意,但这只是一个需要修改的规范乌利勒。
string tempCelsius = (string)jsonObject.SelectToken("forecast.simpleforecast.forecastday[0].high.celsius");