JSON.net访问嵌套数组,对象

时间:2013-09-22 18:37:18

标签: c# json json.net

如何在此JSON(http://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json?includeTimeseries=true&includeCurrentMeasurement=true)中访问嵌套数组 timeseries.shortname?我试过这样但是不起作用。

string url = "http://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json?includeTimeseries=true&includeCurrentMeasurement=true";

HttpWebRequest request = HttpWebRequest.CreateHttp(url);
WebResponse response = await request.GetResponseAsync();

using (Stream stream = response.GetResponseStream())
{
    JsonReader reader = new JsonTextReader(new StreamReader(stream));
    dynamic info = JArray.Load(reader);

    foreach (var item in info)
    {
        myModel.Add(new ItemModel()
        {
            uuid = item.uuid,
            number = item.number,
            city_longname = item.longname,
            timeseries = item.timeseries.shortname
        });
    }
}

3个项目有效,但最后一个(时间序列)产生以下错误:无法对空引用执行运行时绑定

1 个答案:

答案 0 :(得分:0)

dynamic属性为您提供JToken个对象。在这些属性上使用Value属性可以获得string表示。为了使其类型安全,您需要解析/转换。由于您未提供ItemModel课程详情,因此我无法帮助您。

myModel.Add(new ItemModel()
{
  uuid = item.uuid.Value,
  number = item.number.Value,
  city_longname = item.longname.Value
});

timeseries属性是JArray对象。您无法直接访问shortname属性。您必须先选择一个索引(item.timeseries[5],例如,为您提供您所追求的JObject实例。从上面以类型安全的方式获取实际值的详细信息也适用于此。