如何使用Newtonsoft Json.net循环/迭代此反序列化对象?
我有以下JSON对象:-如何使用Newtonsoft Json.net循环/迭代此反序列化对象?,json,vb.net,json.net,Json,Vb.net,Json.net,我有以下JSON对象:- Public Class oPartner Public Property PartnerID() As String Public Property PartnerTitle() As String Public Property PartnerStrapline() As String Public Property PartnerData() As String End Class
Public Class oPartner
Public Property PartnerID() As String
Public Property PartnerTitle() As String
Public Property PartnerStrapline() As String
Public Property PartnerData() As String
End Class
以及以下partners.json文件:-
[
{
"PartnerID": "1",
"PartnerTitle": "TITLE1",
"PartnerStrapline": "STRAP1",
"PartnerData": "SOME INFO IN HERE",
"PartnerImage": ""
},
{
"PartnerID": "2",
"PartnerTitle": "TITLE2",
"PartnerStrapline": "STRAP2",
"PartnerData": "SOME MORE INFO IN HERE",
"PartnerImage": ""
},
{
"PartnerID": "3",
"PartnerTitle": "TITLE3",
"PartnerStrapline": "STRAP3",
"PartnerData": "MORE INFO",
"PartnerImage": ""
}
]
因此,我可以读取JSON并使用以下命令进行反序列化:-
Dim data As oPartner = JsonConvert.DeserializeObject(Of oPartner)(File.ReadAllText("c:\partners.json"))
但是我不知道如何在vb(或C#)中循环json?您的json表示一个对象数组,但您正在尝试将其反序列化为单个实例。您需要反序列化为
oPartner
的数组(或列表)。试着这样做:
Dim data As List(Of oPartner) = JsonConvert.DeserializeObject(Of List(Of oPartner))(File.ReadAllText("c:\partners.json"))
For Each partner As oPartner In data
Console.WriteLine(partner.PartnerID)
Console.WriteLine(partner.PartnerTitle)
Console.WriteLine(partner.PartnerStrapline)
Console.WriteLine(partner.PartnerData)
Console.WriteLine()
Next
然后您可以像这样循环浏览列表:
Dim data As List(Of oPartner) = JsonConvert.DeserializeObject(Of List(Of oPartner))(File.ReadAllText("c:\partners.json"))
For Each partner As oPartner In data
Console.WriteLine(partner.PartnerID)
Console.WriteLine(partner.PartnerTitle)
Console.WriteLine(partner.PartnerStrapline)
Console.WriteLine(partner.PartnerData)
Console.WriteLine()
Next
Fiddle:您需要反序列化为列表而不是单个对象,即
JsonConvert.DeserializeObject(属于列表(属于oPartner))
我相信公共属性PartnerID()as String
定义了单个字符串属性,而不是字符串数组<代码>公共属性PartnerID()作为字符串()将定义一个数组。第一个()
实际上是多余的。瞧。@dbc啊,是的,你当然是对的。我已经修改了。谢谢