J'ai la chaîne JSON suivante à désérialiser:
[{"application_id":"1","application_package":"abc"},{"application_id":"2","application_package":"xyz"}]
J'utilise la méthode DataContractJsonSerializer.
Il est composé d’un tableau d’éléments et je n’ai pas pu trouver d’exemple utilisant VB.Net pour désérialiser cette structure. J'ai la classe d'application suivante pour stocker ces informations:
<DataContract(Namespace:="")> _
Public Class ApplicationItem
<DataMember(Name:="application_id")>
Public Property application_id As String
<DataMember(Name:="application_package")>
Public Property application_package As String
End Class
Je vous recommanderais d'utiliser JavaScriptSerializer
sur DataContractJsonSerializer
. Les raisons sont:
JavaScriptSerializer
est plus rapide que DataContractJsonSerializer
DataContractJsonSerializer
nécessite plus de code que JavaScriptSerializer
pour une sérialisation simple.Vous n'aurez pas besoin des attributs DataContract
et DataMember
à utiliser avec JavaScriptSerializer
Utilisez cette classe de données
<Serializable> _
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
Et utilisez ceci pour désérialiser votre jsonText
:
Dim jss As New JavaScriptSerializer()
Dim dict = jss.Deserialize(Of List(Of ApplicationItem))(jsonText)
Si vous voulez toujours utiliser DataContractJsonSerializer
, vous pouvez utiliser ce code ci-dessous pour désérialiser:
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()
Courtoisie: Occasion Telerik Code Converter
Voici le moyen le plus simple de désérialiser JSON en un objet (à l'aide de .NET 4):
Exemple 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
Cela fonctionne pour moi:
// Get the HttpWebRequest reaponse
string Response = loResponseStream.ReadToEnd();
var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<Dictionary<string, dynamic>>(Response);
string carrier = (dict["Response"]["carrier"]);