4

是否有任何 Python JSON 解析器可以处理尾随逗号?

(我正在使用来自外部来源的“JSON”并且无法控制它。)

4

2 回答 2

6

抓住 PyYAML。JSON 是 YAML 的子集,因此 YAML 解析器应该解析大多数 JSON。YAML 的语法允许在序列中使用尾随逗号。

于 2012-06-15T15:32:25.427 回答
3

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]} 字符串内部时)。

这个库是否仍然被维护是一个悬而未决的问题。它肯定可以使用更多的文档。

于 2018-05-11T04:15:27.757 回答