【问题标题】:Parse Json in VB.NET with "Newtonsoft" Json.net使用“Newtonsoft”Json.net 在 VB.NET 中解析 Json
【发布时间】:2018-01-21 13:29:44
【问题描述】:

如何在 vb.net 中解析 Json;想要创建 bittrex 代码。

我使用以下代码提出的请求:

  Dim request As HttpWebRequest
    Dim response As HttpWebResponse = Nothing
    Dim reader As StreamReader

    Try

        request = DirectCast(WebRequest.Create("https://bittrex.com/api/v1.1/public/getmarketsummary?market=btc-ltc"), HttpWebRequest)
        response = DirectCast(request.GetResponse(), HttpWebResponse)
        reader = New StreamReader(response.GetResponseStream())


        rawresp = reader.ReadToEnd()


    Catch ex As Exception
        Console.WriteLine(ex.ToString)
        MsgBox(ex.ToString)
    Finally
        If Not response Is Nothing Then response.Close()
    End Try

我得到以下 json 响应:

{"success":true,"message":"","result":[{"MarketName":"BTC-LTC","High":0.01670094,"Low":0.01610000,"Volume":47495.02156742,"Last":0.01628948,"BaseVolume":777.22088098,"TimeStamp":"2018-01-21T13:18:23","Bid":0.01624001,"Ask":0.01628948,"OpenBuyOrders":2146,"OpenSellOrders":8104,"PrevDay":0.01622000,"Created":"2014-02-13T00:00:00"}]}

希望 Last 的值显示在文本框中,因此我尝试使用“Newtonsoft”对其进行解析,如下所示:

  Dim jsonArray As JArray = JArray.Parse(rawresp)
    For Each item As JObject In jsonArray
        textboxLast.Text = item.SelectToken("Last").ToString

    Next

但是出现错误:(

【问题讨论】:

  • {} 是对象,[] 是数组,所以可能类似于 JObject.Parse(rawresp)!result(0)!Last
  • 您可能需要指定遇到的错误

标签: json vb.net json.net


【解决方案1】:
Dim json As String = rawresp
Dim jsonObject As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.Linq.JObject.Parse(json)
Dim jsonArray As JArray = jsonObject("result")

For Each item As JObject In jsonArray
    textboxLast.Text = item.SelectToken("Last").ToString
Next

这与 JSON 的格式有关。它不是一个数组,而是一个包含数组的对象,所以你必须先解析对象,然后把数组取出来才能正确解析。你错过了我在上面的代码 sn-p 中添加的一个额外步骤

【讨论】:

  • 如果是 { "success": true, "message": "", "result": { "Currency": "BTC", "Balance": 0.00000020, "Available": 0.00000020 , "Pending": 0.00000000, "CryptoAddress": "xxxxxxxxxxx" } } 那么如何解析其余额@leo-muller
  • 只是前两行,然后是:textboxLast.Text = jsonObject("result")("Currency")
猜你喜欢
  • 1970-01-01
  • 2014-03-05
  • 2014-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多