使用Python美化无效的JSON

4

有一种方法可以使用Python美化有效的JSON:如何在(unix)shell脚本中美化打印JSON?

然而,即使有错误,jsonlint.com也会美化打印JSON。

我想要做到这一点,并且我正在使用Python。有人知道一个能够实现此功能的脚本吗?

谢谢:)


5
考虑检查 https://github.com/zaach/jsonlint,该网站支持jsonlint.com进行了解。 - 9000
2
我考虑过使用这个代码库,但是我只能使用与Python兼容的工具... 不过这正是我需要的。 - Myna
4个回答

2

@kelw已经指出了demjson,它适用于稍微无效的JSON。对于更不符合JSON规范的数据,我编写了barely_json

from barely_json import parse
from pprint import pprint

invalid_json = '[no, , {complete: yes}]'
data = parse(invalid_json)
pprint(data)

1

尝试使用 jsbeautifier 库来美化 JavaScript。它能够工作是因为 JSON 几乎是 JavaScript 的子集。

import json
import jsbeautifier

invalid_json = '{"hello": "world",}'

json.loads(invalid_json)
# ValueError: Expecting property name: line 4 column 1 (char 25)

jsbeautifier.beautify(invalid_json)
# '{\n    "hello": "world",\n}'

1

您可以在自己的脚本中或使用提供的jsonlint.py工具中使用demjson模块。


0

使用Python有一种内置的方法可以实现:

python -m json.tool myfile.json

3
如果有错误,会指出错误位置,但不会返回我输入的内容。即使它是无效的,我也希望进行漂亮的打印输出。是否有解决方案? - Myna
请考虑我下面的回答 - keiw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接