在vb.net中反序列化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, “库存清单”:[ {

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

[
  {
    "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