是否有任何 Python JSON 解析器可以处理尾随逗号?
(我正在使用来自外部来源的“JSON”并且无法控制它。)
抓住 PyYAML。JSON 是 YAML 的子集,因此 YAML 解析器应该解析大多数 JSON。YAML 的语法允许在序列中使用尾随逗号。
json-cfg似乎支持允许它的 JSON 扩展。它还允许注释和不带引号的键。
>>> import jsoncfg
>>> jsoncfg.loads('{"key1": "{my tricky value,}", }')
OrderedDict([('key1', '{my tricky value,}')])
可以使用 [ JSONParserParams
] 类禁用额外的选项(注释和不带引号的键):
jsoncfg.loads('{"key1": "{my tricky value,}" /*nope*/}', jsoncfg.JSONParserParams(allow_comments=False, allow_unquoted_keys=False))
这无需担心允许使用整个 YAML 语法。此外,与基于正则表达式的预处理和过于简单的模块(如 jsoncomment)不同,它实现了一个完整的标记器和解析器(适合非常规语言)以避免嵌套问题(如逗号尾随 a]
或}
字符串内部时)。
这个库是否仍然被维护是一个悬而未决的问题。它肯定可以使用更多的文档。