在vb.net中反序列化json数组

时间:2011-02-01 22:49:30

标签: vb.net arrays json deserialization

我有一个json数组,其格式如下:

[
  {
    "property":96,
    "listofstuff":[
      {
        "anotherproperty":"some text here",
        "yetanother":"text goes here too"
      }
    ],
    "lastproperty":3001
  },
 <rest of array>
]

如何以这样的方式反序列化,即我可以拥有由property索引的对象列表?意思是,我希望能够访问这样的数据:MyList(96).lastpropertyMyList(96).listofstuff.yetanother并让它返回正确的数据类型?甚至可以在vb.net中使用吗?

2 个答案:

答案 0 :(得分:2)

我同意您需要使用的JSON库是http://json.codeplex.com/

中的Json.NET

因此,给定您的示例JSON数组,我创建了以下可用于序列化和反序列化的类:

Public Class Item
    Public Property [property]() As Integer
    Public Property listofstuff() As Stuff()
    Public Property lastproperty() As Integer
End Class

Public Class Stuff
    Public Property anotherproperty() As String
    Public Property yetanother() As String
End Class

然后您需要的是以下代码,以便能够以您希望的方式访问数据:

Dim Items = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Item())(json)
Dim MyList = Items.ToDictionary(Function(x) x.property)
Dim Stuff = MyList(96).listofstuff(0)

如果你对listofstuff属性数组的意图是存储任何字符串对,那么对Item使用这个定义(你也不需要Stuff类):

Public Class Item
    Public Property [property]() As Integer
    Public Property listofstuff() As Dictionary(Of String, String)()
    Public Property lastproperty() As Integer
End Class

答案 1 :(得分:-1)

您需要.net:http://json.codeplex.com/

的JSON库