1570

きれいに印刷したい混乱したJSONファイルがあります。Pythonでこれを行う最も簡単な方法は何ですか?

PrettyPrint が「オブジェクト」を受け取ることは知っていますが、これはファイルである可能性がありますが、ファイルを渡す方法がわかりません。ファイル名を使用するだけでは機能しません。

4

14 に答える 14

2405

jsonモジュールは、インデントするスペースの数を指定するパラメーターを使用して、関数dumpdumps関数でいくつかの基本的なきれいな印刷を既に実装しています。indent

>>> import json
>>>
>>> your_json = '["foo", {"bar":["baz", null, 1.0, 2]}]'
>>> parsed = json.loads(your_json)
>>> print(json.dumps(parsed, indent=4, sort_keys=True))
[
    "foo", 
    {
        "bar": [
            "baz", 
            null, 
            1.0, 
            2
        ]
    }
]

ファイルを解析するには、次を使用しますjson.load()

with open('filename.txt', 'r') as handle:
    parsed = json.load(handle)
于 2012-10-17T21:54:12.800 に答える
59

Pygmentize + Python json.tool = 構文の強調表示によるプリティ プリント

Pygmentize はキラー ツールです。これを参照してください。

python json.tool と pygmentize を組み合わせます

echo '{"foo": "bar"}' | python -m json.tool | pygmentize -l json

pygmentize のインストール手順については、上記のリンクを参照してください。

これのデモは、以下の画像にあります。

デモ

于 2015-08-27T10:30:08.437 に答える
17

コマンド ラインからプリティ プリントし、インデントなどを制御できるようにするには、次のようなエイリアスを設定します。

alias jsonpp="python -c 'import sys, json; print json.dumps(json.load(sys.stdin), sort_keys=True, indent=2)'"

次に、次のいずれかの方法でエイリアスを使用します。

cat myfile.json | jsonpp
jsonpp < myfile.json
于 2017-03-28T14:58:37.087 に答える