gpt4 book ai didi

vb.net - 如何在 VB.NET Newtonsoft 中解析 Json 子项

转载 作者:行者123 更新时间:2023-12-04 20:12:05 25 4
gpt4 key购买 nike

我在使用 Newtonsoft Json.Net 库使用 VB.NET 解析 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)

然后我可以获取 JToken 列表并遍历它们并轻松获取根项目值 - 但是如何获取 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 或解析 item.value - 但语法让我望而却步。

我不想在 VB 中设置一个完整的强类型模型并进行自动反序列化 - 更喜欢在 C# 中执行它的动态方式 - 或者最好只是迭代 CcFull 节点的 n 个子节点并提取电子邮件的值并命名并将它们放在一个通用列表中。

似乎在 SO 上或通过谷歌搜索没有好的 VB.NET 示例。

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

谢谢大家

最佳答案

我不是 JSON.Net 中 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 数组中的单个条目。然后,您可以使用属性名称作为索引来检索该属性的值。

关于vb.net - 如何在 VB.NET Newtonsoft 中解析 Json 子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15982358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com