VB.net JSON Deserialize

Ich habe die folgende JSON-Zeichenfolge zum Deserialisieren:

[{"application_id":"1","application_package":"abc"},{"application_id":"2","application_package":"xyz"}]

Ich verwende die DataContractJsonSerializer-Methode.

Es besteht aus einem Array von Elementen und ich konnte kein Beispiel mit VB.Net finden, das diese Struktur deserialisieren kann. Ich habe die folgende Application-class, um diese Informationen zu speichern:

   _ Public Class ApplicationItem  Public Property application_id As String  Public Property application_package As String End Class 

Ich würde Ihnen empfehlen, JavaScriptSerializer über DataContractJsonSerializer . Die Gründe sind:

  • JavaScriptSerializer ist schneller als DataContractJsonSerializer
  • DataContractJsonSerializer benötigt mehr Code als JavaScriptSerializer für eine einfache Serialisierung.

Sie benötigen das Attribut DataMember und DataMember nicht zusammen mit JavaScriptSerializer

Verwenden Sie diese Datenklasse

  _ Public Class ApplicationItem Public Property application_id() As String Get Return m_application_id End Get Set m_application_id = Value End Set End Property Private m_application_id As String Public Property application_package() As String Get Return m_application_package End Get Set m_application_package = Value End Set End Property Private m_application_package As String End Class 

Und verwenden Sie dies, um Ihren jsonText zu deserialisieren:

 Dim jss As New JavaScriptSerializer() Dim dict = jss.Deserialize(Of List(Of ApplicationItem))(jsonText) 

Wenn Sie weiterhin DataContractJsonSerializer verwenden möchten, können Sie diesen Code zur Deserialisierung verwenden:

 Dim obj As New List(Of ApplicationItem)() Dim ms As New MemoryStream(Encoding.Unicode.GetBytes(json)) Dim serializer As New System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.[GetType]()) obj = DirectCast(serializer.ReadObject(ms), List(Of ApplicationItem)) ms.Close() ms.Dispose() 

Mit freundlicher Genehmigung: Used Telerik Code Converter

Hier ist die einfachste Möglichkeit, JESON in ein Objekt zu deserialisieren (mit .NET 4):

Beispiel JSON:

 { "dogs":[], "chickens":[ { "name":"Macey", "eggs":7 }, { "name":"Alfred", "eggs":2 } ] } 

VB.NET:

 Try Dim j As Object = New JavaScriptSerializer().Deserialize(Of Object)(JSONString) Dim a = j("dogs") ' returns empty Object() array Dim b = j("chickens")(0) ' returns Dictionary(Of String, Object) Dim c = j("chickens")(0)("name") ' returns String "Macey" Dim d = j("chickens")(1)("eggs") ' returns Integer 2 Catch ex As Exception ' in case the structure of the object is not what we expected. End Try 

Das funktioniert für mich:

 // Get the HttpWebRequest reaponse string Response = loResponseStream.ReadToEnd(); var jss = new JavaScriptSerializer(); var dict = jss.Deserialize>(Response); string carrier = (dict["Response"]["carrier"]);