JSON格式化报Expecting 'EOF'...got '{'解析错误咨询
JSON格式化解析报错排查
报错信息
在jsonformatter.org站点执行JSON格式化操作时触发解析错误,返回的错误信息如下:
Parse error on line 1: ...","topBrand":false}{"_id":{"$oid":"601c ----------------------^ Expecting 'EOF', '}', ',', ']', got '{' [error][1]
待格式化原始内容
触发报错的待处理文本为两个首尾相连的JSON对象:
{"_id":{"$oid":"601ac115be37ce2ead437551"},"barcode":"511111019862","category":"Baking","categoryCode":"BAKING","cpg":{"$id":{"$oid":"601ac114be37ce2ead437550"},"$ref":"Cogs"},"name":"test brand @1612366101024","topBrand":false} {"_id":{"$oid":"601c5460be37ce2ead43755f"},"barcode":"511111519928","brandCode":"BUCKS","category":"Beverages","categoryCode":"BEVERAGES","cpg":{"$id":{"$oid":"5332f5fbe4b03c9a25efd0ba"},"$ref":"Cogs"},"name":"Starbucks","topBrand":false}
错误原因
标准JSON语法要求单份JSON文本仅能存在一个根节点,根节点支持对象、数组、字符串、数字、布尔值、null六种类型。
解析器读取完第一个完整对象末尾的闭合符}后,按照语法规则,此时合法的后续字符只能是:文本结束标记(EOF)、嵌套结构的闭合符(}/])、同级别元素分隔符(,),但实际读取到了第二个对象的起始符{,不符合语法规则,因此直接抛出解析错误,和报错提示内容完全匹配。
修复方法
根据实际数据场景选择对应处理方式:
- 常规JSON使用场景:将所有独立JSON对象包裹在一个数组中,相邻对象之间添加逗号分隔,即可生成符合标准规范的合法JSON,可被所有格式化工具正常解析。修复后的合法结构示例:
[ {"_id":{"$oid":"601ac115be37ce2ead437551"},"barcode":"511111019862","category":"Baking","categoryCode":"BAKING","cpg":{"$id":{"$oid":"601ac114be37ce2ead437550"},"$ref":"Cogs"},"name":"test brand @1612366101024","topBrand":false}, {"_id":{"$oid":"601c5460be37ce2ead43755f"},"barcode":"511111519928","brandCode":"BUCKS","category":"Beverages","categoryCode":"BEVERAGES","cpg":{"$id":{"$oid":"5332f5fbe4b03c9a25efd0ba"},"$ref":"Cogs"},"name":"Starbucks","topBrand":false} ]
- 如果待处理数据是JSON Lines(NDJSON)格式的流式数据(特征为每行存储一个独立JSON对象,常用于日志、批量数据导出场景),普通JSON格式化工具本身不支持该格式解析,除了按上述数组方式改造结构外,也可以使用支持JSON Lines格式的专用工具直接处理。
内容的提问来源于stack exchange,提问作者Bama
相关产品推荐
相关产品推荐

