Ich habe den folgenden Code, es verbindet sich mit PHP-Server und Daten erfolgreich abrufen, ich bin nicht sehr gut mit VB, wie kann ich den JSON-Antworttext lesen und extrahieren es Elemente?Wie zu lesen JSON http Post Antwort mit VB
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, 0, 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
Die JSON Antwort wäre so etwas wie:
{"comments": [
{
"comment" : "some text",
"date" : "some date",
"user" : "user name"
},
{
"comment" : "some text",
"date" : "some date",
"user" : "user name"
}
],
"messages": [ .... ]
}
Wie der JSON-String zur Ausgabe in:
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
Erstellen Sie ein Objekt, das die Struktur des JSON übereinstimmt und deserialisieren es. Schauen Sie sich diesen Beitrag an: http://StackOverflow.com/Questions/8118019/vb-net-json-deserialize –
Ich bin mir nicht sicher, ob ich weiß, was ich mache, aber es sagt 'System.Runtime.Serialization.Json.DataContractJsonSerializer (data.GetType()) 'ist nicht definiert, wenn ich Dim ser als New System.Runtime.Serialization.Json.DataContractJsonSerializer (data.GetType())'! Warum ist das so? – razzak
Geringe Empfehlung, wenn ich Objekte (Streams, Webresponse) erzeuge, die IDisposable implementieren, würde ich empfehlen, sie in eine using-Anweisung zu packen. – Rogala