きれいに印刷したい混乱したJSONファイルがあります。Pythonでこれを行う最も簡単な方法は何ですか?
PrettyPrint が「オブジェクト」を受け取ることは知っていますが、これはファイルである可能性がありますが、ファイルを渡す方法がわかりません。ファイル名を使用するだけでは機能しません。
きれいに印刷したい混乱したJSONファイルがあります。Pythonでこれを行う最も簡単な方法は何ですか?
PrettyPrint が「オブジェクト」を受け取ることは知っていますが、これはファイルである可能性がありますが、ファイルを渡す方法がわかりません。ファイル名を使用するだけでは機能しません。
json
モジュールは、インデントするスペースの数を指定するパラメーターを使用して、関数dump
とdumps
関数でいくつかの基本的なきれいな印刷を既に実装しています。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)
Pygmentize はキラー ツールです。これを参照してください。
python json.tool と pygmentize を組み合わせます
echo '{"foo": "bar"}' | python -m json.tool | pygmentize -l json
pygmentize のインストール手順については、上記のリンクを参照してください。
これのデモは、以下の画像にあります。
コマンド ラインからプリティ プリントし、インデントなどを制御できるようにするには、次のようなエイリアスを設定します。
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