Excel VBA解析JSON遇运行时错误'5'的问题求助
问题根源与解决方法
首先明确:错误和单双引号无关,JsonConverter完全支持标准JSON的双引号格式,你注释掉的替换引号操作反而会破坏JSON结构,千万别执行。
真正的问题是你返回的JSON是数组结构(开头是[ ]),但你直接把它当成单个对象去访问responses("id"),这就导致了运行时错误'5'。
修正步骤
- 解析后的
responses是一个Collection对象(对应JSON数组),你需要先访问数组里的具体元素,再读取属性。 - 如果只需要第一个元素,直接按索引访问(VBA集合索引从1开始);如果要遍历所有元素,用循环处理。
修正后的代码示例
Dim responses As Object Dim responseItem As Object ' 解析JSON数组,得到Collection对象 Set responses = JsonConverter.ParseJson(request.ResponseText) ' 方法1:访问第一个元素的id If responses.Count > 0 Then Set responseItem = responses(1) Debug.Print responseItem("id") ' 也可以直接访问其他属性 Debug.Print responseItem("home_team") Debug.Print responseItem("away_team") End If ' 方法2:遍历所有数组元素 For Each responseItem In responses Debug.Print responseItem("id") Debug.Print responseItem("sport_title") Next
额外说明
- 标准JSON要求字符串必须用双引号包裹,单引号是不符合规范的,JsonConverter也不支持用单引号的非标准JSON,所以你的引号怀疑是错误的。
- 确保
request.ResponseText返回的是完整有效的JSON,你可以先把它复制到本地JSON编辑器里验证格式是否正确,避免JSON本身有语法错误(比如你提供的示例里bookmakers数组的{...没闭合,实际返回的JSON必须是完整的)。
内容的提问来源于stack exchange,提问作者CWDS
相关产品推荐
相关产品推荐

