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

本文关键字:无效 何解析 JSON | 更新日期: 2023-09-27 17:57:41

我在这里有一些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循环时,它只会使崩溃

我如何才能让它跳过不存在的条目,只考虑存在的条目??

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

如果您使用Json。Net,您可以使用LINQ-to-JSON API(JTokens/JObject)提取所需的数据。它有一个方法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());
        }
    }
}

这有帮助吗?