加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

vb.net – 如何使用VB阅读JSON http post响应

发布时间:2020-12-17 00:28:10 所属栏目:大数据 来源:网络整理
导读:我有以下代码,它连接到 PHP服务器并成功检索数据,我对VB不是很好,我如何读取JSON响应文本并提取它的元素? Public Class Form1 Private Sub submit_Click(sender As System.Object,e As System.EventArgs) Handles submit.Click Dim user As String Dim pass
我有以下代码,它连接到 PHP服务器并成功检索数据,我对VB不是很好,我如何读取JSON响应文本并提取它的元素?
Public Class Form1
    Private Sub submit_Click(sender As System.Object,e As System.EventArgs) Handles submit.Click
        Dim user As String
        Dim pass As String
        user = uname.Text
        pass = passwd.Text

        Dim request As WebRequest = WebRequest.Create("http://domain.com/test.php")
        request.Method = "POST"
        Dim postData As String
        postData = "username=" & user & "&password=" & pass
        Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
        request.ContentType = "application/x-www-form-urlencoded"
        request.ContentLength = byteArray.Length
        Dim dataStream As Stream = request.GetRequestStream()
        dataStream.Write(byteArray,byteArray.Length)
        dataStream.Close()
        Dim response As WebResponse = request.GetResponse()
        Console.WriteLine(CType(response,HttpWebResponse).StatusDescription)
        dataStream = response.GetResponseStream()
        Dim reader As New StreamReader(dataStream)
        Dim responseFromServer As String = reader.ReadToEnd()
        If responseFromServer = "0" Then
            MsgBox("Login Failed")
        Else
            MsgBox("json data")
        End If
        reader.Close()
        dataStream.Close()
        response.Close()
    End Sub
End Class

JSON响应将是这样的:

{"comments": [
               {
               "comment" : "some text","date"    : "some date","user"    : "user name"
               },{
               "comment" : "some text","user"    : "user name"
               }
             ],"messages": [ .... ]
}

如何将json字符串输出到:

Comments
user      date      comment
-----------------------------------
user 1    date 1    comment 1
user 2    date 2    comment 2

Messages
user      date      message
-----------------------------------
user 1    date 1    message 1
user 2    date 2    message 2
经过长时间的研究和许多测试,我发现一个非常好的扩展名为Newtonsoft.json,它非常简单,可以从包管理器控制台安装如下:
install-package Newtonsoft.json

并包括它:

Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq

那么我所需要做的就是声明元素名称和值:

Else
    Dim json As String = responseFromServer
    Dim ser As JObject = JObject.Parse(json)
    Dim data As List(Of JToken) = ser.Children().ToList
    Dim output As String = ""

    For Each item As JProperty In data
        item.CreateReader()
        Select Case item.Name
            Case "comments"
                output += "Comments:" + vbCrLf
                For Each comment As JObject In item.Values
                    Dim u As String = comment("user")
                    Dim d As String = comment("date")
                    Dim c As String = comment("comment")
                    output += u + vbTab + d + vbTab + c + vbCrLf
                Next

            Case "messages"
                output += "Messages:" + vbCrLf
                For Each msg As JObject In item.Values
                    Dim f As String = msg("from")
                    Dim t As String = msg("to")
                    Dim d As String = msg("date")
                    Dim m As String = msg("message")
                    Dim s As String = msg("status")
                    output += f + vbTab + t + vbTab + d + vbTab + m + vbTab + s + vbCrLf
                Next

        End Select
    Next
    MsgBox(output)
End If

希望有人会发现这有用

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读