如何遍历列表中的JArray项

本文关键字:JArray 列表 何遍历 遍历 | 更新日期: 2023-09-27 18:08:15

这是我的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();
    }
}

谢谢你的帮助!

如何遍历列表中的JArray项

您可以使用SelectTokens()查找所有服务值。SelectTokens()支持使用JSONPath语法使用通配符和/或过滤器查询嵌套在JSON对象深处的多个属性。

var services = stops
    .SelectTokens("departures.all[*].service")
    .Select(t => (string)t)
    .ToList();

这里[*]是通配符,返回departures.all[]数组中的所有条目。

有关JSONPath的完整描述,请参阅此处。

样本小提琴。