私は次のコードを持っています、それはPHPサーバーに接続してデータを正常に取得します。
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
JSONレスポンスは次のようになります。
{"comments": [
{
"comment" : "some text",
"date" : "some date",
"user" : "user name"
},
{
"comment" : "some text",
"date" : "some date",
"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
という非常に素晴らしい拡張機能を見つけました。これは非常に簡単で、package manager console
から次のようにインストールできます。
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
誰かがこれが役に立つことを願って
@razzakは、Json.Net NuGetパッケージを使用する絶対に正しいです。これを劇的に削減する別のオプションは、組み込みのDeserializeObject関数を使用することです。モデルを適切に定義している限り、次のような方法でJsonをオブジェクトのインスタンスにデシリアライズできます。
dim myObject as MyDefinedObject = JsonConvert.DeserializeObject(responseFromServer)
またはこれはC#で
MyDefinedObject m = JsonConvert.DeserializeObject<MyDefinedObject>(responseFromServer);
また、ループしたくない場合は、次のようなものを使用してトークンを選択することもできます。
Dim d = ser.SelectToken("$..resources[?(@)].travelDistance")
上記のコードは、Bing APIの2つのポイント間のtravelDistanceを見つけるために使用されました。 BingまたはGoogle Map REST APIを扱ったことがある場合は、非常に具体的な値を探しているときにJSonが一般的に大きすぎてデータをループできないことがわかります。
これがこのようなことをしたい人にとって役立つことを願っています。 JSon.Net Webサイトには、いくつかの追加の例を紹介するブログページがあります。
http://james.newtonking.com/json
〜乾杯
使用するには
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
「Json.Net」ライブラリをインストールする必要があります。
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
これは、YouTube API V.3のVB.netでそれをカットするようです
もちろん、それはあなたが何を達成しようとしているかによって異なりますが、YoutubeはJson形式としてデータを返します