用VB.NET解析简单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

我有一个简单的JSON字符串,我正试图用Visual Studio Express 2010使用本机.net 4.0而不是NewtonSoft解析它。我试图解析的json数据如下所示

"{"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)

你为什么要重新发明轮子?