首先,我引用的是:http://james.newtonking.com/json/help/index.html?topic=html/SelectToken.htm
我正在使用json.net
如果我收到一个返回以下内容的回复:
{
"success_count": 1,
"error_count": 0,
"data": [
{
"status": "example status",
"member_rating": 42
}
]
}
我把它存储在一个名为"as_Read"的变量中
我可以做以下事情:
Dim as_ReadJobj As JObject = JObject.Parse(as_Read)
Dim as_SuccessCountValue = as_ReadJobj.Property("success_count").Value
Dim as_ErrorCountValue = as_ReadJobj.Property("error_count").Value
我似乎不明白的是如何质疑身份的价值。
我试过:
Dim as_SubscribeStatus = as_ReadJobj.SelectToken("data[0].status").Value
Dim as_SubscribeStatus = as_ReadJobj.Property("data")("status").Value
还有其他一些方法。我似乎只是对一些显而易见的东西视而不见,但我是vb.net的新手,刚刚开始使用这个json库。
谢谢!
更新:我想明白了。
我接受了一个答案,因为这个解决方案非常有效。我也解决了我最初的问题。以下工作:
as_SubscribeStatus = as_ReadJobj.SelectToken("data[0].status").ToString
我想我对SelectToken的内部工作原理了解不够。但现在我有两个解决方案。令人惊叹的
您可以使用JToken列表来执行此操作,并遍历该列表中的项以提取所需的信息,包括嵌入的数组。
Dim asRead As String = "{""success_count"": 1,""error_count"": 0,""data"": [{""status"": ""example status"",""member_rating"": 42}]}"
Dim as_ReadJobj As JObject = JObject.Parse(asRead)
Dim results As List(Of JToken) = as_ReadJobj.Children().ToList
Dim as_SuccessCountValue As String
Dim as_ErrorCountValue As String
Dim status As String = ""
Dim member_rating As String = ""
For Each item As JProperty In results
item.CreateReader()
Select Case item.Name
Case "success_count"
as_SuccessCountValue = item.Value.ToString
Case "error_count"
as_ErrorCountValue = item.Value.ToString
Case "data"
For Each subitem As JObject In item.Values
status = subitem("status")
member_rating = subitem("member_rating")
Next
End Select
Next
我已经编辑了SO中另一个问题的代码。我还没有尝试使用.SelectToken
,但上面的代码应该满足您提供的要求。
注:
我使用了一个字符串表示status和member_rating,而它们实际上应该是list of string
。