使用json.net,如何在嵌入式阵列中进行查询?

使用json.net,如何在嵌入式阵列中进行查询?,json,vb.net,json.net,Json,Vb.net,Json.net,首先,我指的是: 我正在使用json.net 如果我得到返回以下内容的post响应: { "success_count": 1, "error_count": 0, "data": [ { "status": "example status", "member_rating": 42 } ] } Dim as_ReadJobj As JObject = JObject.Parse(

首先,我指的是:

我正在使用json.net

如果我得到返回以下内容的post响应:

{
    "success_count": 1,
    "error_count": 0,
    "data": [
        {
            "status": "example status",
            "member_rating": 42

        }
    ]
}
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
我将其存储到一个名为“as_Read”的变量中

我可以做到以下几点:

{
    "success_count": 1,
    "error_count": 0,
    "data": [
        {
            "status": "example status",
            "member_rating": 42

        }
    ]
}
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
我已经从中编辑了代码。我还没有尝试使用
。SelectToken
,但是上面的代码应该满足您提供的要求

注:


我使用了一个字符串作为状态和成员评级,而它们实际上应该是一个
字符串列表

第一个不起作用的示例中的花括号是打字错误吗?因为这看起来应该和两个方括号一起使用there@Starscream1984-那是个打字错误。抱歉:)我得到了“扩展方法”的“公共函数值(共U个)”的类型参数“U”()正如Newtonsoft.Json.Linq.extensions中的U'无法推断。这让我发疯。我已经通过了大量的例子,显然我是一个白痴。毫无疑问。对于这样一个简单的解决方案,几个小时的头痛。我希望有人能跳上这个项目,并将其翻译为vb.net。这工作得很好,同时我也弄明白了我在做什么It’以前他做错了……在你发布这篇文章的时候,我会把你的标记为正确,但也会编辑我的问题来告诉你。