如何读取带有注释的JSON文件?Python加载含注释JSON报错如何解决
Python读取带注释JSON文件的解决方案
标准JSON规范本身不支持注释和尾随逗号,因此直接用内置json库读取带注释的JSON文件会抛出解析错误,可通过以下两种方案解决:
方案一:使用json5库(推荐)
JSON5是JSON的扩展语法,原生支持//单行注释、/* */多行注释、尾随逗号等特性,完全兼容标准JSON格式,是处理此类问题最稳妥的方案。
- 安装依赖:
pip install json5 - 示例代码:
import json5 with open('contents.json', 'r', encoding='utf-8') as jsonfile: objec = json5.load(jsonfile) list_o = objec['Fridge'] for i in list_o: print(i)
方案二:正则预处理(无第三方依赖,仅适合简单场景)
如果不希望安装额外依赖,可通过正则先删除JSON文本中的注释和非法尾随逗号,再用内置json库解析:
import json import re with open('contents.json', 'r', encoding='utf-8') as jsonfile: jsondata = jsonfile.read() # 移除//单行注释 jsondata = re.sub(r'//.*$', '', jsondata, flags=re.MULTILINE) # 移除数组/对象末尾的非法尾随逗号 jsondata = re.sub(r',\s*([}\]])', r'\1', jsondata) objec = json.loads(jsondata) list_o = objec['Fridge'] for i in list_o: print(i)
注意:该方案存在局限性,若JSON内容的字符串值中本身包含
//字符(如URL、特定文本内容),正则会误删有效内容,复杂场景请优先使用方案一。
内容的提问来源于stack exchange,提问作者Zadmain
相关产品推荐
相关产品推荐

