VB.net JSON Deserialize

Ho la seguente stringa JSON per deserializzare:

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

Sto usando il metodo DataContractJsonSerializer.

È costituito da una serie di elementi e non sono riuscito a trovare un esempio utilizzando VB.Net che può deserializzare questa struttura. Ho la seguente class di applicazione per memorizzare queste informazioni:

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

Ti consigliamo di utilizzare JavaScriptSerializer su DataContractJsonSerializer . Le ragioni sono:

  • JavaScriptSerializer è più veloce su DataContractJsonSerializer
  • DataContractJsonSerializer richiede più codice di JavaScriptSerializer per una semplice serializzazione.

Non è necessario l’attributo DataContract e DataMember da utilizzare insieme a JavaScriptSerializer

Utilizza questa class di dati

  _ 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 

E usa questo per deserializzare il tuo jsonText :

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

Se si desidera comunque utilizzare DataContractJsonSerializer , è ansible utilizzare questo codice di seguito per deserializzare:

 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() 

Per gentile concessione: usato Telerik Code Converter

Ecco il modo più semplice per deserializzare JSON in un object (utilizzando .NET 4):

Esempio 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 

Questo funziona per me:

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