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

本文关键字:对象 数组 嵌套 net 访问 JSON | 更新日期: 2023-09-27 18:32:24

我如何访问这个 JSON (http://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json?includeTimeseries=true&includeCurrentMeasurement=true) 嵌套数组,例如时间序列.简称?我试过这样,但它不起作用。

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 个项目有效,但最后一个(时间序列)给出以下错误:无法对空引用执行运行时绑定

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

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实例)。有关从上面以类型安全的方式获取实际值的详细信息也适用于此处。