vb.net从服务器读取json响应

时间:2019-09-08 14:45:21

标签: json vb.net

我是使用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监视窗口报告空异常。

1 个答案:

答案 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