JSONは値をユニコードでエンコードします。
そのため次のようになります。
[{“name”: “\u82a5\u5ddd\u9f8d\u4e4b\u4ecb”}, {“name”: “\u76f4\u6728\u4e09\u5341\u4e94”}]
内容が分かりません。
JSONを修正したい、中身を簡単に確認したい、というときに困ります。
エンコードしない方法を考えました。
jsonモジュールでjson.dumps(リスト)を使うと、辞書型のリストをJSON文字列に変換します。
このとき一行になってしまうので見にくいです。
json.dumps(リスト, sort_keys=True, indent=2)
とすると改行とインデント(半角スペース2文字)が入ります。データはソートされます。
これをデコードすると文字列が見やすい状態になります。状態になります。
これを使い、データをエンコードされないJSONに変換し保存する関数を書きました。
def json_visible_write(recs, filename):
json_str = json.dumps(recs, sort_keys=True, indent=2).encode().decode("unicode-escape")
with open(filename, "w") as f:
f.write(json_str)
json_str = json.dumps(recs, sort_keys=True, indent=2).encode().decode("unicode-escape")
with open(filename, "w") as f:
f.write(json_str)
これを使うと次のように保存されます。
[
{
"name": "芥川龍之介"
},
{
"name": "直木三十五"
}
]
{
"name": "芥川龍之介"
},
{
"name": "直木三十五"
}
]
コメント