c#如何循环看 JArray 列表中的项目

标签: Asp.net json C#
发布时间: 2017/2/25 3:21:28
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

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

谢谢你的帮助 !

解决方法 1:

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

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

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

JSONPath 的完整说明请参见这里

示例当副手

赞助商