Десериализовать массив json в vb.net - PullRequest
2 голосов
/ 02 февраля 2011

У меня есть массив 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?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011

Я согласен с тем, что вам нужно использовать JSON-библиотеку Json.NET, найденную по адресу http://json.codeplex.com/

Итак, учитывая ваш пример массива 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
0 голосов
/ 02 февраля 2011

Вам нужна библиотека JSON для .net: http://json.codeplex.com/

...