请求排查JSON格式错误:Jsonlint抛出解析异常,提示期望STRING类型却获取到{
JSON解析错误定位与修复方案
我帮你找到了问题所在,咱们来一步步拆解解决:
错误根源
你遇到的Expecting 'STRING', got '{'解析错误,核心原因是**schemaInfo.columns的结构违反了JSON语法规则**:
- 你原本想在这里定义多列的结构信息,但错误地将
columns声明为一个对象(用{}包裹),紧接着又直接放置了另一个独立的列对象{ "name": "name", ... }。按照JSON规范,对象内部只能是键: 值的键值对格式,解析器预期下一个内容是字符串类型的键,结果收到了对象起始符{,因此抛出了错误。 - 实际上,
columns需要存储一组同类型的列信息,正确的结构应该是数组(用[]包裹),数组中的每个元素才是单个列的对象。
修复后的完整JSON
只需要把columns外层的{}替换为[],将三个列对象统一包裹在数组中即可,修复后的代码如下:
{ "checkRid": "ri.data-health.lava-catalog.check.50418784-00c5-46e0-96ad-e806e24190a4", "version": 2, "checkName": "schemaComparison", "groups": [], "checkIntent": null, "participants": { "datasetRid": "ri.foundry.lava-catalog.dataset.3b31fb14-2ba2-446c-b811-5c4a808ba710", "branchId": "master", "columnNames": [] }, "subjects": [], "validations": { "type": "schemaComparison", "schemaComparison": { "severity": "MODERATE", "schemaInfo": { "columns": [ { "name": "code", "columnType": "STRING" }, { "name": "name", "columnType": "STRING" }, { "name": "id", "columnType": "STRING" } ] }, "schemaComparisonType": "EXACT_MATCH_UNORDERED_COLUMNS" } }, "schedule": null, "autoResolutionConfiguration": null, "issueConfiguration": null, "isContractCheck": false, "attribution": { "userId": "8be575d6-eb3b-4fec-bd5e-81fc7c4ee8b0", "lastUpdated": "2021-02-18T09:51:52.934376Z" } }
实用小提示
以后编写JSON时可以多留意这两点:
- 用对象
{}存储单个实体的键值对属性,用数组[]存储一组同类型的元素集合 - 写完后用Jsonlint这类校验工具快速检查,能第一时间定位语法问题
内容的提问来源于stack exchange,提问作者Nishanth
相关产品推荐
相关产品推荐

