Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Newtonsoft Json.net循环/迭代此反序列化对象?_Json_Vb.net_Json.net - Fatal编程技术网

如何使用Newtonsoft Json.net循环/迭代此反序列化对象?

如何使用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

我有以下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
以及以下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啊,是的,你当然是对的。我已经修改了。谢谢