我有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