我有一个json数组,其格式如下:
[
{
"property":96,
"listofstuff":[
{
"anotherproperty":"some text here",
"yetanother":"text goes here too"
}
],
"lastproperty":3001
},
<rest of array>
]
如何以这样的方式反序列化,即我可以拥有由property
索引的对象列表?意思是,我希望能够访问这样的数据:MyList(96).lastproperty
或MyList(96).listofstuff.yetanother
并让它返回正确的数据类型?甚至可以在vb.net中使用吗?
答案 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库