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 个项目有效,但最后一个(时间序列)给出以下错误:无法对空引用执行运行时绑定
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
实例)。有关从上面以类型安全的方式获取实际值的详细信息也适用于此处。