从JSON文件中收集所有appID

时间:2017-12-11 17:19:57

标签: json vb.net

我的问题是关于JSON文件,我在将某些值放入文本组件时遇到错误。

{
"response": {
    "game_count": 4,
    "games": [
        {
            "appid": 10,
            "playtime_forever": 0
        },
        {
            "appid": 20,
            "playtime_forever": 0
        },
        {
            "appid": 30,
            "playtime_forever": 0
        },
        {
            "appid": 40,
            "playtime_forever": 0
        }
    ]

   }
}

我试图获得价值观" 10,20,30,40"来自" appid"在RichTextBox中,一个在另一个之下。为此,我使用此代码:

JsonString = file

        Dim jsonObject As JObject = JObject.Parse(JsonString)
        Dim JsonArray As JArray = JArray.Parse(jsonObject.SelectToken("games").ToString)
        For Each item As JObject In JsonArray
            RichTextBox2.Text = item.SelectToken("appid").ToString

        Next

但是我在上面代码的第4行中收到以下错误:

  

对象引用未设置为对象的实例

有没有办法解决这个问题?我相信我的代码是对的。我正在使用NewtonSoft库。

1 个答案:

答案 0 :(得分:0)

您可以使用SelectTokens("..appid")递归下降JSON令牌层次结构并查找名为"appid"的属性值,其中".."JSONPath 递归下降运算符< / EM>:

Dim jsonObject As JToken = JToken.Parse(JsonString)
Dim appids = jsonObject _ 
    .SelectTokens("..appid") _
    .Select(Function(t) CType(t, Long)) _
    .ToList()

找到所有"appid"个值后,我使用explicit conversion cast投射到Long。您可以转为Int如果您确定所有appid值都小于Int.MaxValue。或者,如果您对数值不感兴趣,可以将其转换为String

工作.Net fiddle