Deserialize json array in vb.net

允我心安 提交于 2020-01-11 10:35:09

问题


I have a json array which is formatted as follows:

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

How can I deserialize this in such a way that I can have a list of objects indexed by property? Meaning, I want to be able to access the data like this: MyList(96).lastproperty or MyList(96).listofstuff.yetanother and have it return the proper datatype too? Is that even possible in vb.net?


回答1:


I agree that the JSON library you need to use is Json.NET found at http://json.codeplex.com/

So, given your example JSON array, I made the following classes that can be used for serializing and deserializing:

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

Then all you need is the following code to be able to access the data in roughly the way you wanted to:

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

If your intent with the listofstuff property array was to store any string pair then use this definition for Item (and you also won't need the Stuff class):

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



回答2:


You need a JSON library for .net: http://json.codeplex.com/



来源:https://stackoverflow.com/questions/4868863/deserialize-json-array-in-vb-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!