PythonでJSONをエンコードしない方法

Pocket

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)

これを使うと次のように保存されます。

[
  {
    "name": "芥川龍之介"
  },
  {
    "name": "直木三十五"
  }
]

[ 2021年8月2日 | カテゴリー: Python | タグ: ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報