Python で JSON を読みやすく整形
json パッケージの dumps を使えばインデント指定で整形してくれる。
import json sample = '{"a":1,"set":{"type":"A","items":["apple","lemon","orange"]},"price":1200}' data = json.loads(sample) text = json.dumps(data, indent=2) print(text)
結果、
{ "a": 1, "set": { "type": "A", "items": [ "apple", "lemon", "orange" ] }, "price": 1200 }
HTTPリクエスト受け取った JSON を整形するなら、
以下のように使う
# -*- coding: utf-8 -*- import urllib.request import json http_request = urllib.request.Request('http://xxxx.xxxx.xxx/aaaaa') with urllib.request.urlopen(http_request) as res: stscode = res.getcode() body = res.read().decode('utf-8') print( json.dumps(json.loads(body), indent=2) )
↑このように、HTTP応答を読んだ時、dumps を実行した結果、中身の2バイト文字が
\u3042 のようにユニコードでの print 表示になってしまう。
そういう場合は、dumps メソッドに、ensure_ascii というデフォルト True の引数があるので
ensure_ascii=False を付ける
print( json.dumps(json.loads(body), indent=2, ensure_ascii=False) )