JSON校验报错Expecting 'EOF', '}', ',', ']', got ':'排查求助
JSON解析报错根因与修复方案
根因说明
你的JSON存在语法结构错误,问题出在fq字段的定义:
- JSON数组(
[]包裹的结构)中仅允许存放独立值,不支持直接写入"key":"value"格式的键值对,你在fq的数组内直接放置了带冒号的键值对,违反JSON语法规范。 - 报错提示里的
Expecting 'EOF', '}', ',', ']', got ':',就是指解析器读取fq的数组内容时,预期读到数组元素、逗号或者数组结束符],但实际读到了非法的冒号,因此抛出解析错误。
修复方案
根据实际业务逻辑,可选择两种修复方式:
方案1:fq为过滤条件字符串数组(适配Solr等常用查询接口规范)
如果fq用于传递多个过滤查询条件,直接把每个条件写成完整字符串即可:
{ "responseHeader": { "zkConnected":"true", "status":0, "QTime":6, "params": { "q":"*:*", "start":"0", "json":"", "fq": [ "AA:123140372859067", "BB:123140*", "CC:*41*" ], "rows":"10", "forwardedCount":"1", "wt":"json" } } }
方案2:fq为键值对属性集合
如果fq本身需要存储一组键值属性,把数组包裹符[]替换为对象包裹符{}即可:
{ "responseHeader": { "zkConnected":"true", "status":0, "QTime":6, "params": { "q":"*:*", "start":"0", "json":"", "fq": { "AA":"123140372859067", "BB":"123140*", "CC":"*41*" }, "rows":"10", "forwardedCount":"1", "wt":"json" } } }
内容的提问来源于stack exchange,提问作者Rama Krishnam
相关产品推荐
相关产品推荐

