用VB.NET解析简单JSON
我有一个简单的JSON字符串,我正试图用Visual Studio Express 2010使用本机.net 4.0而不是NewtonSoft解析它。我试图解析的json数据如下所示用VB.NET解析简单JSON,json,vb.net,parsing,datacontractserializer,cisco,Json,Vb.net,Parsing,Datacontractserializer,Cisco,我有一个简单的JSON字符串,我正试图用Visual Studio Express 2010使用本机.net 4.0而不是NewtonSoft解析它。我试图解析的json数据如下所示 "{"token_type":"Bearer",""expires_in":3599,"access_token":"VxwK6YWYj6paqyMK2D2r4uDl34qg"}" 我可以让下面的代码毫无错误地运行,但是当我尝试转储对象的内容时,列表中没有任何内容。这是我创建的类 Public Class Aut
"{"token_type":"Bearer",""expires_in":3599,"access_token":"VxwK6YWYj6paqyMK2D2r4uDl34qg"}"
我可以让下面的代码毫无错误地运行,但是当我尝试转储对象的内容时,列表中没有任何内容。这是我创建的类
Public Class AuthToken
Public Property token_type As String
Get
Return m_token_type
End Get
Set(ByVal value As String)
m_token_type = value
End Set
End Property
Private m_token_type As String
Public Property expires_in() As Integer
Get
Return m_expires_in
End Get
Set(ByVal value As Integer)
m_expires_in = value
End Set
End Property
Private m_expires_in As String
Public Property access_token As String
Get
Return m_access_token
End Get
Set(ByVal value As String)
m_access_token = value
End Set
End Property
Private m_access_token As String
End Class
我的感觉是我的问题在我的课堂上,但我不确定。因此,在这个网站和其他网站上搜索了数小时后,我整理了以下代码来解析信息,并将其转储到RichTextBox,以查看它是什么
Dim sr As New StreamReader(req.GetResponse.GetResponseStream)
Dim authtoken As New List(Of AuthToken)()
Dim ms As New MemoryStream(System.Text.Encoding.Unicode.GetBytes(sr.ReadToEnd))
Dim serializer As New System.Runtime.Serialization.Json.DataContractJsonSerializer(authtoken.GetType)
authtoken = DirectCast(serializer.ReadObject(ms), List(Of AuthToken))
ms.Close()
ms.Dispose()
sr.Close()
sr.Dispose()
For Each token In authtoken
rtbResponse.AppendText("Token: " & token.access_token & " Expires in: " & token.expires_in)
Next
那么,我的类是否创建错误?memorystream中的数据是否因为类在反序列化时与json数据的内容不匹配而没有进入authtoken对象
如果我使用的是“DataContractSerializer”,我的类中是否需要有数据契约“东西”
非常感谢您的帮助。数据没有进入authtoken变量,因为您没有authtoken列表-只有一个对象。因此,如果您一次只获取一个JSON对象,请删除列表并按如下方式操作:
Dim sr As New StreamReader(req.GetResponse.GetResponseStream)
Dim authtoken As AuthToken
Dim ms As New MemoryStream(System.Text.Encoding.Unicode.GetBytes(sr.ReadToEnd))
Dim serializer As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(AuthToken))
authtoken = DirectCast(serializer.ReadObject(ms), AuthToken)
ms.Close()
ms.Dispose()
sr.Close()
sr.Dispose()
rtbResponse.AppendText("Token: " & authtoken.access_token & " Expires in: " & authtoken.expires_in)
你为什么要重新发明轮子?