在vb.net中反序列化json数组
我有一个json数组,其格式如下:在vb.net中反序列化json数组,vb.net,arrays,json,deserialization,Vb.net,Arrays,Json,Deserialization,我有一个json数组,其格式如下: [ { "property":96, "listofstuff":[ { "anotherproperty":"some text here", "yetanother":"text goes here too" } ], "lastproperty":3001 }, <rest of array> ] [ { “财产”:96, “库存清单”:[ {
[
{
"property":96,
"listofstuff":[
{
"anotherproperty":"some text here",
"yetanother":"text goes here too"
}
],
"lastproperty":3001
},
<rest of array>
]
[
{
“财产”:96,
“库存清单”:[
{
“anotherproperty”:“此处有一些文本”,
“yetanother”:“文本也在此处”
}
],
“lastproperty”:3001
},
]
如何将其反序列化,使对象列表按
属性
索引?也就是说,我希望能够访问如下数据:MyList(96).lastproperty
或MyList(96).listofsuff.yetanother
,并让它返回正确的数据类型?甚至在vb.net中也可以这样做吗?您需要一个用于.net的JSON库:我同意您需要使用的JSON库位于
因此,根据您的示例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)
如果您使用listofsuff
属性数组的目的是存储任何字符串对,则将此定义用于项
(并且您也不需要Stuff
类):
事实上,我最初尝试过用regex解析它,事后看来,这似乎不是最明智的方式……我将如何使用它来实现这一目的呢?作者发文(参见LINQ到JSON示例)如果要强键入类,可以选择:
项。ToDictionary
似乎不存在?此外,如果此代码的工作方式与它看起来的一样简单,那么您就为我节省了几个小时的调试丑陋的正则表达式的时间。请记下这一点。我忘了带括号。
Public Class Item
Public Property [property]() As Integer
Public Property listofstuff() As Dictionary(Of String, String)()
Public Property lastproperty() As Integer
End Class