我有touble使用VB.NET使用Newtonsoft Json.Net库如何解析JSON儿童VB.NET Newtonsoft
Json Data
---------
{
"CC": "[email protected]",
"CcFull": [
{
"Email": "[email protected]",
"Name": "John Sample"
},
{
"Email": "[email protected]",
"Name": "Mike Sample"
}
],
"FromFull" : {
"Email": "[email protected]",
"Name": "John Doe"
}
}
解析JSON
我能得到这样一个有效的JObject:
Dim o As JObject = JObject.Parse(strJson)
然后我可以得到一个JTokens列表并遍历它们并轻松获取根项目值 - 但是如何让Child为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#中使用动态方法 - 或者最好只是为nCcull节点迭代n个子项并拔出电子邮件和名称的值,并将其放入通用列表中。
似乎在SO或Google上没有好的VB.NET示例。
C#有完全简单的方法来做到这一点 - 但我被困在这个项目的VB.NET中。
感谢乡亲
感谢鲍勃 - 做到了这一招:-) - 另一个问题出现了,Json的格式稍有不同,子项抛出了一个错误 – Charlez
无法投射类型为'Newtonsoft.Json.Linq.JProperty'的对象来键入' Newtonsoft.Json.Linq.JObject' - 这个就是我刚刚在示例中添加的FromFull Json数据。这不包括周围的方括号[] - 并且来自公共API,因此我无法控制Json - 任何想法? – Charlez
我找到了解决方案 - 只是使用strEmail = item.Value(“电子邮件”) - 这个数据只有1行电子邮件和全名 - 不是行集合 - 所以没有子项目 – Charlez