VB原生的json功能好像很爛(?),所以還是覺得用Newtonsoft.Json這個好了,功能也比較完整
要使用Newtonsoft.Json 首先要先去你的 [專案]選單->[管理nuget套件]
在瀏覽那邊搜尋Newtonsoft.Json 並且安裝,目前最新是13.0.1版(2021/3/23),裝好後這樣就可以了
Function get_web_jsondata(url As String)
Dim webRequest As WebRequest = WebRequest.Create(url)
Dim request As HttpWebRequest = CType(webRequest, HttpWebRequest)
Dim JsonStr As String
request.Method = "GET"
request.ContentType = "application/json"
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Using reader As StreamReader = New StreamReader(response.GetResponseStream())
JsonStr = reader.ReadToEnd()
End Using
Return JsonStr
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim JsonStr = get_web_jsondata("https://codefling.com/capi/category-2/?do=apicall")
Dim Obj As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.JsonConvert.DeserializeObject(JsonStr)
TextBox1.Text = Obj.Item("file").ElementAt(0).Item("file_name").ToString
End Sub
可以在上圖看到 我們有一個get_web_jsondata這個function ,只是拿來抓網頁上回傳的json資料而已,
主要程式碼在下面這個,把你的JsonStr的字串改成物件的概念
Dim Obj As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.JsonConvert.DeserializeObject(JsonStr)
之後你就可以操作你的obj了
如果是json你就可以用Obj.Item(“file”) 這樣,但是有些json裡面又包含到array 你就會需要像是Obj.Item(“file”).ElementAt(0)這樣來操作array的部分 數字0就是array的key,在自己切換或是跑迴圈之類即可