我有以下的JSON字符串反序列化:VB.net JSON反序列化
[{"application_id":"1","application_package":"abc"},{"application_id":"2","application_package":"xyz"}]
我使用DataContractJsonSerializer方法。
它是由项目数组组成的,我找不到使用VB.Net可以反序列化此结构的示例。我有以下应用类来存储这样的信息:
我有以下的JSON字符串反序列化:VB.net JSON反序列化
[{"application_id":"1","application_package":"abc"},{"application_id":"2","application_package":"xyz"}]
我使用DataContractJsonSerializer方法。
它是由项目数组组成的,我找不到使用VB.Net可以反序列化此结构的示例。我有以下应用类来存储这样的信息:
我建议你到超过DataContractJsonSerializer
使用JavaScriptSerializer
。其理由是:
JavaScriptSerializer
快超过DataContractJsonSerializer
DataContractJsonSerializer
需要比JavaScriptSerializer
一个简单的序列化的更多代码。你不会需要DataContract
和DataMember
属性与JavaScriptSerializer
使用此数据类
<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
一起使用,并以此来反序列化jsonText
:
Dim jss As New JavaScriptSerializer()
Dim dict = jss.Deserialize(Of List(Of ApplicationItem))(jsonText)
如果你仍然想使用DataContractJsonSerializer
,你可以使用下面这个代码反序列化:
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()
提供者:用于Telerik Code Converter
这里是反序列化JSON成一个对象的最简单的方式(使用.NET 4):
例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
虽然Abdul的答案更加完整,但这确实是以一种快速和肮脏的方式访问JSON数据的最简单方法(例如来自API响应的小型可预测集合)。 – msanford
哇,这真的帮了我,我正在寻找快速简单的东西,你做到了! –
这适用于我:
// 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"]);
它完美的作品。感谢您也显示了一个代码转换器的链接。 –
我不熟悉VB.NET语法并经常使用它将C#代码转换为VB.NET :) –
很酷,感谢提示!使用JavaScriptSerializer真的很容易 –