Python 无法解析带有额外尾随逗号的 JSON

Aiv*_*nF. 6 python parsing json runtime-error

这段代码:

import json
s = '{ "key1": "value1", "key2": "value2", }'
json.loads(s)
Run Code Online (Sandbox Code Playgroud)

在 Python 2 中产生此错误:

ValueError:期望属性名称:第 1 行第 16 列(字符 15)

Python 3 中的类似结果:

json.decoder.JSONDecodeError:期望用双引号括起来的属性名称:第 1 行第 16 列(字符 15)

如果我删除尾随逗号(在 之后"value2"),则不会出现错误。但是我的代码会处理许多不同的 JSON,所以我无法手动完成。是否可以将解析器设置为忽略这样的最后一个逗号?

Laz*_*vić 5

JSON 规范不允许尾随逗号。解析器由于遇到无效的语法标记而抛出异常。

您可能有兴趣对这些文件使用不同的解析器,例如。为JSON5 规范构建的解析器,允许这种语法。


jnn*_*nnn 5

另一种选择是将其解析为 YAML;YAML 接受有效的 JSON,但也接受各种变体。

import yaml
s = '{ "key1": "value1", "key2": "value2", }'
yaml.load(s)
Run Code Online (Sandbox Code Playgroud)