这是我的json数据:
{
"date": "2016-08-26",
"time_of_day": "14:19",
"request_time": "2016-08-26T14:19:59+01:00",
"station_name": "Derby",
"station_code": "DBY",
"departures": {
"all": [
{
"service": "22152000",
},
{
"service": "22150000",
},
{
"service": "22180008",
}
]
}
}
我想要做的是将上面json中的每个服务变量放入一个列表中。在此之后,我想要通过api链接单独调用这些服务变量中的每一个。这是我的C#代码:
JArray items = new JArray();
items.Add(service["service"]);
int serviceLength = items.Count;
for (int i = 0; i < items.Count; i++)
{
string moreJson = get_web_content("http://transportapi.com/v3/uk/train/service/" + items[i] + "/" + date + "/" + hours + ":" + minutes + "/timetable.json?" + appID + "/" + appKey);
dynamic schedluedContent = JsonConvert.DeserializeObject(moreJson);
JArray items2 = new JArray();
foreach (JObject stops in schedluedContent.stops)
{
dr = dt.NewRow();
dr["Station Code"] = stops["station_code"];
dr["Station Name"] = stops["station_name"];
dr["Aimed Arrival Time"] = stops["aimed_arrival_time"];
dt.Rows.Add(dr);
GridViewTrainTimes.DataSource = dt;
GridViewTrainTimes.DataBind();
}
}
感谢您的帮助!
答案 0 :(得分:1)
您可以使用SelectTokens()
查找所有服务值。 SelectTokens()
支持使用JSONPath syntax查询嵌套在具有通配符和/或过滤器的JSON对象内部的多个属性。
var services = stops
.SelectTokens("departures.all[*].service")
.Select(t => (string)t)
.ToList();
此处[*]
是通配符运算符,返回departures.all[]
数组中的所有条目。
有关JSONPath的完整说明,请参阅here。
示例fiddle。