You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET使用Newtonsoft解析Bittrex行情JSON获取Last值报错求助

解决VB.NET解析Bittrex getmarketsummary JSON的错误问题

你遇到的解析错误核心原因很明确:你把外层是JSON对象的响应当成了JSON数组来解析。咱们先看一下Bittrex返回的响应结构:

{"success":true,"message":"","result":[{"MarketName":"BTC-LTC",...}]}

最外层是一个{}包裹的JSON对象,里面的result字段才是包含行情数据的JSON数组。而你用JArray.Parse(rawresp)去解析整个对象,肯定会抛出格式错误。

修正后的解析代码

直接替换你原来的解析部分代码就行,我给你写了更健壮的版本:

' 解析整个响应为JObject(外层是对象,不是数组)
Dim jsonObj As JObject = JObject.Parse(rawresp)

' 先判断API请求是否成功,避免后续解析出错
If CBool(jsonObj("success")) Then
    ' 提取result字段对应的JArray
    Dim resultArray As JArray = jsonObj("result")
    
    ' 因为你请求的是单个市场(btc-ltc),result数组里只有一条数据,直接取第一个元素
    Dim marketData As JObject = resultArray(0)
    
    ' 提取Last值并赋值到文本框
    textboxLast.Text = marketData("Last").ToString()
Else
    ' 处理请求失败的情况,比如市场不存在、API限制等
    MsgBox("行情请求失败:" & jsonObj("message").ToString())
End If

额外优化建议

如果你想更简洁地取值,可以用SelectToken方法,它支持类似XPath的路径语法,一行就能拿到Last值:

textboxLast.Text = jsonObj.SelectToken("result[0].Last")?.ToString()

这里的?.是空值传播运算符,能避免当result为空或者Last不存在时抛出空引用异常,让代码更稳定。

为什么原来的代码会报错?

JArray.Parse()只能解析以[]开头的JSON数组,而Bittrex的API响应最外层是{}的JSON对象,所以直接用JArray解析会触发格式不匹配的异常。必须先解析成JObject,再提取里面的数组字段。

内容的提问来源于stack exchange,提问作者Amit kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:36:01