我的问题是关于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库。
答案 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。