如何处理无逗号分隔符的大型JSON数组反序列化问题?
解决JSON数组对象缺失逗号的反序列化问题
针对大体积JSON文件中数组对象间缺少逗号、无法直接反序列化的问题,提供两种高效解决方案:
方案一:自动修复JSON文本
通过正则匹配补全缺失的逗号,无需手动操作。核心逻辑是找到数组中}后直接跟随{的位置(含换行、空格等空白字符),插入分隔逗号。
Python实现示例
import re import json def fix_missing_commas(json_content): # 匹配"}"后接任意空白字符再到"{"的模式,替换为"}, {" return re.sub(r'}\s*{', '}, {', json_content) # 读取并修复大文件 with open('your_broken_file.json', 'r', encoding='utf-8') as f: raw_content = f.read() fixed_content = fix_missing_commas(raw_content) # 反序列化处理后的数据 parsed_data = json.loads(fixed_content)
该正则能覆盖绝大多数常规格式场景,若JSON存在特殊嵌套结构,可微调正则表达式适配。
方案二:使用容忍型解析库
无需修改原文件,直接用支持非严格JSON格式的库解析,自动忽略逗号缺失问题。
示例1:使用demjson
import demjson with open('your_broken_file.json', 'r', encoding='utf-8') as f: raw_content = f.read() # 直接解析非严格JSON parsed_data = demjson.decode(raw_content)
示例2:使用json5
json5支持JSON5语法规范,天然兼容这种缺少逗号的场景:
import json5 with open('your_broken_file.json', 'r', encoding='utf-8') as f: raw_content = f.read() parsed_data = json5.loads(raw_content)
内容的提问来源于stack exchange,提问作者Moraru Viorel
相关产品推荐
相关产品推荐

