You need to enable JavaScript to run this app. VBA解析NSE接口返回JSON报类型不匹配 如何提取指定字段值
优惠活动
大模型
产品
解决方案
定价
更多

VBA解析NSE接口返回JSON报类型不匹配 如何提取指定字段值

错误原因
  • NSE India接口有反爬校验,无请求头的GET请求会返回错误页面,不是合法JSON,解析时触发类型不匹配错误
  • 你写的JSON字段路径不符合实际数据结构:filtered.data是一维对象数组,每个数组元素包含CE(看涨期权)、PE(看跌期权)、strikePrice(行权价)属性,不存在你写的二维索引(1)(2)的结构
修复后的完整代码
Option Explicit

Sub nse5()
    Dim req As New MSXML2.XMLHTTP60
    Dim url As String
    Dim json As Object
    Dim i As Long
    url = "https://www.nseindia.com/api/option-chain-indices?symbol=NIFTY"

    With req
        .Open "GET", url, False
        ' 添加请求头模拟浏览器请求,避免被反爬拦截
        .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
        .setRequestHeader "Accept", "application/json, text/plain, */*"
        .setRequestHeader "Accept-Language", "en-US,en;q=0.9"
        .send
        ' 先校验请求是否成功
        If .Status <> 200 Then
            Debug.Print "请求失败,状态码:" & .Status
            Exit Sub
        End If
        Set json = JsonConverter.ParseJson(.responseText)
    End With

    ' 示例:打印第一条期权数据的行权价、看涨持仓、看跌持仓
    Debug.Print "=====第一条期权数据====="
    Debug.Print "行权价:" & json("filtered")("data")(1)("strikePrice")
    Debug.Print "看涨持仓量(CE OI):" & json("filtered")("data")(1)("CE")("openInterest")
    Debug.Print "看跌持仓量(PE OI):" & json("filtered")("data")(1)("PE")("openInterest")
    
    ' 如果需要遍历所有数据可以用以下循环
    ' For i = 1 To json("filtered")("data").Count
    '    Debug.Print "行权价" & i & ":" & json("filtered")("data")(i)("strikePrice")
    '    Debug.Print "看涨持仓:" & json("filtered")("data")(i)("CE")("openInterest")
    '    Debug.Print "看跌持仓:" & json("filtered")("data")(i)("PE")("openInterest")
    ' Next i
End Sub
前置依赖配置
  • 提前安装VBA-JSON解析库
  • 打开VBA编辑器,点击「工具-引用」,勾选以下两项:
    • Microsoft Scripting Runtime
    • Microsoft XML, v6.0
排查提示

如果仍出现解析错误,可以在.send后添加Debug.Print req.responseText,查看返回内容是否为合法JSON,确认是否被反爬拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 08:57:02