我是使用Web服务的新手。我创建了一个控制台应用程序,用于从Web服务器请求并接收json格式的数据。根据在线示例(目前找不到网站)
来自服务器的JSON响应。实际数据不同
{
"message": {
"campus": {
"env": "test",
"key_id": "AAAABBBBBCCCCDDD",
"contractSending": [
{
"hash":"EEEEFFFFGGGG",
"origin": "11111"
}
],
"contractReceiving": []
}
}
}
我尝试了几种解决方案,但均未成功。这是我发现的最干净的示例,不需要购买第三方软件。
Imports System.Net
Imports System.Web.Script.Serialization
Module Module1
Sub Main()
Dim url As String = String.Format("localhost/api/orders/access/?campus={0}&pin={1}", "1111", "222222")
Using client As New WebClient()
'Get server response
Dim jsonString As String = client.DownloadString(url)
Dim campusInfo As CampusMessage = (New JavaScriptSerializer()).Deserialize(Of CampusMessage)(jsonString)
End Using
End Sub
Public Class CampusMessage
Public Property messsage As Campus
End Class
Public Class Campus
Public Property env As String
Public Property key_id As String
Public Property contractSending As ContractSending
End Class
Public Class ContractSending
Public Property hash As String
Public Property origin As String
End Class
Public Class ContractReceiving
Public Property hash As String
Public Property origin As String
End Class
End Module
我希望“校园”消息类和潜艇具有数据。 VB监视窗口报告空异常。
答案 0 :(得分:0)
首先,您的JSON不正确。
"origin": "11111", 'that comma there shouldn't be there as there are no more elements after it
您没有正确编写类。 使用工具使它们自动生成,或者使用一些JSON可视化工具,这样您就可以跨槽并更轻松地对其进行跟踪,从而正确地将其写出。
之后,它可以正常工作。
Public Class CampusMessage
Public Property message As Message
End Class
Public Class Message
Public Property campus As Campus
End Class
Public Class Campus
Public Property env As String
Public Property key_id As String
Public Property contractSending As ContractSending()
Public Property contractReceiving As Object()
End Class
Public Class ContractSending
Public Property hash As String
Public Property origin As String
End Class
[]标记和数组,因此您还必须将数据持有人也设置为数组,例如ContractSending()而不是ContractSending