我在这里有一些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循环时,它只是崩溃
如何制作它以便跳过不存在的条目并且只考虑那些条目?
答案 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());
}
}
}
这有帮助吗?