如何在VB中解析Json子元素.净Newtonsoft



我使用VB解析Json有困难。. NET使用Newtonsoft Json。网络图书馆

    Json Data
    ---------
    {
        "CC": "sample.cc@emailDomain.com",
        "CcFull": [
            {
                "Email": "sample.cc@emailDomain.com",
                "Name": "John Sample"
            },
            {
                "Email": "another.cc@emailDomain.com",
                "Name": "Mike Sample"
            }
        ],
        "FromFull" : {
            "Email": "myUser@theirDomain.com",
            "Name": "John Doe"
         }
    }

我可以得到一个有效的JObject:

    Dim o As JObject = JObject.Parse(strJson)

然后我可以得到一个JTokens列表,并通过它们迭代,很容易得到根项目值-但如何得到CcFull的子记录?

    Dim results As List(Of JToken) = o.Children().ToList
    For Each item As JProperty In results
        item.CreateReader()
        Select Case item.Name
            Case "CC"
                dim strCC = item.Value.ToString
            Case "CcFull"
                'This has children (Email and Name)
        End Select
     Next 

似乎我可以使用JArray或解析项目。值-但是语法不明白。

我不想在VB中建立一个完整的强类型模型并进行自动反序列化-更喜欢c#中的动态方式-或者最好只是迭代CcFull节点的n子节点并取出Email和Name的值并将它们放入通用列表中。

似乎没有好的VB。. NET示例:

c#有完全简单的方法来做到这一点-但我被困在VB。. NET

谢谢人

我不是JSON中Linq to JSON实现方面的专家。,但这对我有效。

你已经差不多到了。您所需要做的就是在对象模型中再深入一点。

Dim results As List(Of JToken) = o.Children().ToList
For Each item As JProperty In results
    item.CreateReader()
    Select Case item.Name
        Case "CC"
            Dim strCC = item.Value.ToString
        Case "CcFull"
            Dim strEmail As String
            Dim strName As String
            For Each subitem As JObject In item.Values
                strEmail = subitem("Email")
                strName = subitem("Name")
            Next
    End Select
Next

您从结果列表中得到的项有子项,正如您所注意到的。该子项具有一系列值——JSON字符串中用括号表示的数组。该Values方法是一个IEnumerable,因此我们可以遍历它,从每次迭代中接收一个JObject。该对象表示CcFull数组中的单个条目。然后,您可以使用属性名作为索引来检索该属性的值。

相关内容

  • 没有找到相关文章

最新更新