如何从 JSON 数组中获取所有值
How to get all the values from a JSON array
我正在尝试从 JSON 数组中获取所有键。
JSON的link是:this one
我使用的代码是:
Imports System.Net.Http
Imports System.Text.Json.Nodes
Public Class Form1
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using http = New HttpClient
Dim url = "https://api-cloud.bitmart.com/account/v1/currencies"
Dim json = JsonNode.Parse(Await http.GetStreamAsync(url))
Dim naming As [String] = json("currency")
RichTextBox1.Text = json("currency")
End Using
End Sub
End Class
但是单击按钮不会填充任何内容。 RichTextBox 保持为空,
虽然我想获得所有值 ( es : "DFC, "$GM", "BBK" ecc)
我正在使用 .net6
,但我将不胜感激 framework.net 解决方案。
谢谢
.Net核心答案
看看我下面的建议。我可以看到您在解析 Json 数据以及未获取 GetStreamAsync
操作的 result
时缺少几个步骤。
Dim streamData As Stream = Nothing
Using http As HttpClient = New HttpClient
Dim url As String = "https://api-cloud.bitmart.com/account/v1/currencies"
Dim t As Task(Of Stream) = http.GetStreamAsync(url)
streamData = t.Result
End Using
Dim jsonResponse As JsonNode = JsonNode.Parse(streamData)
Dim jsonData As JsonNode = jsonResponse("data")
Dim jsonCurrencies As JsonNode = jsonData("currencies")
Dim c As String = String.Empty
Dim n As String = String.Empty
For Each jsonCurrency As JsonNode In jsonCurrencies.AsArray()
c += jsonCurrency("currency").ToString + " "
n += jsonCurrency("network").ToString + " "
Next
Debug.WriteLine(c)
Debug.WriteLine(n)
这将输出从以下位置下载的所有货币:https://api-cloud.bitmart.com/account/v1/currencies
我的测试程序不能很好地处理 Async/Await 操作,所以我删除了对 Await 的调用。我相信你可以毫无问题地把它放回去。
这是 .Net Core 的答案,我相信对于 .Net Framework,您需要使用不同的 Json 解析器,例如 Newtonsoft。
.Net Framework 4.8 答案
此版本使用了 Newtonsoft Json parser
,与 .Net Core 版本略有不同,因为它使用了 Async/Await
Private Async Sub DownloadData()
Dim jsonString As String
Using http As HttpClient = New HttpClient
Dim url As String = "https://api-cloud.bitmart.com/account/v1/currencies"
Dim streamData As Stream = Await http.GetStreamAsync(url)
Using sr As StreamReader = New StreamReader(streamData)
jsonString = sr.ReadToEnd
End Using
streamData.Close()
End Using
Dim jsonResponse As JObject = JObject.Parse(jsonString)
Dim jsonData As JObject = CType(jsonResponse("data"), JObject)
Dim jsonCurrencies As JArray = CType(jsonData("currencies"), JArray)
Dim c As String = String.Empty
Dim n As String = String.Empty
For Each jsonCurrency As JObject In jsonCurrencies
c += jsonCurrency("currency").ToString + " "
n += jsonCurrency("network").ToString + " "
Next
Debug.WriteLine(c)
Debug.WriteLine(n)
End Sub
我正在尝试从 JSON 数组中获取所有键。 JSON的link是:this one
我使用的代码是:
Imports System.Net.Http
Imports System.Text.Json.Nodes
Public Class Form1
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using http = New HttpClient
Dim url = "https://api-cloud.bitmart.com/account/v1/currencies"
Dim json = JsonNode.Parse(Await http.GetStreamAsync(url))
Dim naming As [String] = json("currency")
RichTextBox1.Text = json("currency")
End Using
End Sub
End Class
但是单击按钮不会填充任何内容。 RichTextBox 保持为空,
虽然我想获得所有值 ( es : "DFC, "$GM", "BBK" ecc)
我正在使用 .net6
,但我将不胜感激 framework.net 解决方案。
谢谢
.Net核心答案
看看我下面的建议。我可以看到您在解析 Json 数据以及未获取 GetStreamAsync
操作的 result
时缺少几个步骤。
Dim streamData As Stream = Nothing
Using http As HttpClient = New HttpClient
Dim url As String = "https://api-cloud.bitmart.com/account/v1/currencies"
Dim t As Task(Of Stream) = http.GetStreamAsync(url)
streamData = t.Result
End Using
Dim jsonResponse As JsonNode = JsonNode.Parse(streamData)
Dim jsonData As JsonNode = jsonResponse("data")
Dim jsonCurrencies As JsonNode = jsonData("currencies")
Dim c As String = String.Empty
Dim n As String = String.Empty
For Each jsonCurrency As JsonNode In jsonCurrencies.AsArray()
c += jsonCurrency("currency").ToString + " "
n += jsonCurrency("network").ToString + " "
Next
Debug.WriteLine(c)
Debug.WriteLine(n)
这将输出从以下位置下载的所有货币:https://api-cloud.bitmart.com/account/v1/currencies
我的测试程序不能很好地处理 Async/Await 操作,所以我删除了对 Await 的调用。我相信你可以毫无问题地把它放回去。
这是 .Net Core 的答案,我相信对于 .Net Framework,您需要使用不同的 Json 解析器,例如 Newtonsoft。
.Net Framework 4.8 答案
此版本使用了 Newtonsoft Json parser
,与 .Net Core 版本略有不同,因为它使用了 Async/Await
Private Async Sub DownloadData()
Dim jsonString As String
Using http As HttpClient = New HttpClient
Dim url As String = "https://api-cloud.bitmart.com/account/v1/currencies"
Dim streamData As Stream = Await http.GetStreamAsync(url)
Using sr As StreamReader = New StreamReader(streamData)
jsonString = sr.ReadToEnd
End Using
streamData.Close()
End Using
Dim jsonResponse As JObject = JObject.Parse(jsonString)
Dim jsonData As JObject = CType(jsonResponse("data"), JObject)
Dim jsonCurrencies As JArray = CType(jsonData("currencies"), JArray)
Dim c As String = String.Empty
Dim n As String = String.Empty
For Each jsonCurrency As JObject In jsonCurrencies
c += jsonCurrency("currency").ToString + " "
n += jsonCurrency("network").ToString + " "
Next
Debug.WriteLine(c)
Debug.WriteLine(n)
End Sub