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

VBA用MSXML2.XMLHTTP发POST请求解析JSON报Expecting '{'或'['错误求助

问题根因及修复方案

根因定位

你遇到的JSON解析报错本质是请求体格式不符合JSON规范,导致API服务端拒绝处理,返回了空响应/非JSON格式的错误响应,最终JsonConverter解析空内容时报错。
对比你提供的正常工作的参考代码,原来的问题代码的请求体存在以下错误:

  • 所有JSON字符串类型的字段、值都未用双引号包裹:包括methodType的取值extract、sourceApplication的取值DSA、conditionType的所有取值、key的所有取值、日期范围的2021-08-31这类日期字符串、排序值desc都遗漏了双引号,属于非法JSON格式,服务端无法识别直接返回空结果。
  • 部分数值类型如果服务端要求传字符串格式的话也需要包裹双引号,比如global_bu_id的取值11在参考代码里就是用双引号包裹的。

修复后的正确请求体写法

直接按照参考代码的格式修正reqBody的内容即可,VBA里字符串转义需要用两个双引号代表一个实际的双引号,所有JSON要求的字符串字段和值都用转义后的双引号包裹:

Dim strUrl As String
Dim reqBody As String
        
'For search GOSS service API-Step1
strUrl = "https://gossrepo.ins.dell.com/gossv3/api/reporting/service/getrefid"
        
'create a method for calling HTTP services
Set hReq = CreateObject("MSXML2.XMLHTTP")
    
With hReq
    .Open "POST", strUrl, blnAsync, False
    ' 修正后的合法JSON请求体,所有字符串都用转义的双引号包裹
    reqBody = "{""methodType"":""extract"",""sourceApplication"":""DSA"",""searchParameter"":[{""conditionType"":""term"",""key"":""global_bu_id"",""value"":""11""},{""conditionType"":""wildcard"",""key"":""customer_num"",""value"":[530007546697]},{""conditionType"":""range"",""key"":""order_date"",""value"":[{""from"":""2021-08-31"",""to"":""2021-09-09""}]},{""conditionType"":""sort"",""key"":""order_date_time"",""value"":""desc""}],""pageSize"":40,""pageNum"":0}"
    .SetRequestHeader "Content-type", "application/json"
    .Send reqBody
    While hReq.ReadyState <> 4
        DoEvents
    Wend
    ' 新增状态码校验逻辑,排除请求层面错误
    If hReq.Status = 200 Then
        strResponse = hReq.ResponseText
        Debug.Print strResponse
    Else
        Debug.Print "请求错误,状态码:" & hReq.Status & ",错误信息:" & hReq.StatusText
    End If
End With
    
Set Json = JsonConverter.ParseJson(strResponse)

额外排查建议

如果修改后还是返回空,可以按以下步骤排查:

  • 打印发送前的reqBody内容,复制到Postman里直接发送,验证请求体本身是否合法
  • 如果Postman请求带了额外的鉴权头、代理配置,需要对比Postman的请求头,把缺失的头信息比如Authorization、User-Agent等通过SetRequestHeader补充到VBA请求里
  • 确认VBA运行环境是否在公司内网,是否可以正常访问目标接口域名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:36:02