Deserialisierung von JSON-String zu VB.net Objekt

Ich versuche zu konvertieren, die einen JSON-String in eine VB.net Objekt zum einfachen Zugriff auf alle Daten in der JSON-String.

Mein JSON-String sieht wie folgt aus:

{
  "status": "ok",
  "count": 4,
  "data": [
    {
      "clan_id": 500002846,
      "nickname": "Azrael",
      "id": 500429872
    },
    {
      "clan_id": null,
      "nickname": "Azrael0",
      "id": 500913252
    },
    {
      "clan_id": 500028112,
      "nickname": "Azrael0313",
      "id": 504109422
    },
    {
      "clan_id": null,
      "nickname": "Azrael7",
      "id": 501594186
    }
  ]
}

Jetzt versuche ich, zu Deserialisieren, diesen String in eine VB.net Objekt

Meiner Klasse Definitionen sind:

Public Class Rootobject
    Private _data1 As String

    Public Property status As String
    Public Property count As Integer
    Public Property data() As Datum
End Class

Public Class Datum
    Public Property clan_id As Integer?
    Public Property nickname As String
    Public Property id As Integer
End Class

dem Visual Studio 2012 automatisch erstellt für mein JSON-String.

Ich habe versucht, zu Deserialisieren .JSON-Deserializer:

Dim Testobject As Rootobject _
= Global.Newtonsoft.Json.JsonConvert.DeserializeObject(Of Rootobject)(JSON_String)

und mit JavaScriptSerializer:

Dim serializer As New System.Web.Script.Serialization.JavaScriptSerializer()
Dim Testobject_2 As Rootobject = serializer.Deserialize(Of Rootobject)(JSON_String)

Aber in beiden Fällen bin ich nur in der Lage, Zugriff auf "status" und "zählen", aber nicht im "data" - array.

Ich bin neu in Visual Basic, also Las ich eine Menge über JSON und Deserializer und andere Menschen mit dieser Art von Problemen, aber die meisten Lösungen sind für C# und nicht für VB.net

Irgendwelche Ideen, was könnte ich falsch gemacht haben?

Versucht Public Property data() As IList(Of Datum) Dann sagt er: kann Nicht deserialisiert werden die aktuellen JSON-Objekt (z.B. {"name":"Wert"}) in Typ " System.Sammlungen.Generisches.IList`1[WoT_Tool.WoT_Tool+Datum]', weil die Art benötigt ein JSON-array (z.B. [1,2,3]) Deserialisieren korrekt. Um diesen Fehler zu beheben, ändern den JSON zu JSON-array (z.B. [1,2,3])

InformationsquelleAutor Azrael | 2013-12-17

Schreibe einen Kommentar