如何解析JSON中的项目并跳过无效条目

时间:2014-04-10 13:12:28

标签: c# json

我在这里有一些JSON数据 - http://backpack.tf/api/IGetPrices/v3/?key=534639d04dd7b85e028b4773

正如您所看到的,["响应"] ["价格"]字段有各种其他条目,主要内容

在价格标记之后,下一个是10,而不是0或1。

我需要做的是,通过循环或其他方式,获取prices下的所有有效条目,并获得其6> 0>当前>值

所以,如果在循环中,像

["response"]["prices"][i]["6"]["0"]["current"]["value"]

问题是,我不能让我的c#代码忽略0和1等的值。当我运行for循环时,它只是崩溃

如何制作它以便跳过不存在的条目并且只考虑那些条目?

1 个答案:

答案 0 :(得分:0)

如果使用Json.Net,则可以使用LINQ-to-JSON API(JTokens / JObjects)提取所需的数据。它有一个方法SelectToken,它允许您使用类似路径的语法来导航JSON。如果缺少路径中的任何标记,则该方法返回null。因此,我们可以向下导航到prices节点并循环其属性,跳过您认为“无效”的-1。然后,对于其余每个属性,再次使用SelectToken导航到["6"]["0"]["current"]["value"](如果存在)。如果是,我们打印名称和值。

JObject root = JObject.Parse(json);
JObject prices = (JObject)root.SelectToken("response.prices");
foreach (JProperty prop in prices.Properties())
{
    if (prop.Name != "-1")
    {
        JToken value = prop.Value.SelectToken("6.0.current.value");
        if (value != null)
        {
            Console.WriteLine(prop.Name + ": " + value.ToString());
        }
    }
}

这有帮助吗?