Liquidsのロゴ Liquids

0

JSONを書き込む方法【Python】

Python

Pythonの標準ライブラリにJSONを扱うためのjsonがあります。

JSONをファイルに書き込むには、json.dump()を使用します。
第1引数には、書き込むJSON(辞書型で表す)
第2引数には、書き込み先のファイルを指定します。

import json

data = {'name': 'John Smith', 'age': 33}
out_file = open('./out.json', 'w')
json.dump(data, out_file)
out_file.close()
out.json
{"name": "John Smith", "age": 33}

文字列としてJSONを取得したい場合には、json.dumps()を使用します。

import json

data = {'name': 'John Smith', 'age': 33}
json_str = json.dumps(data)
print(json_str)
# {"name": "John Smith", "age": 33}

デフォルトでは、ensure_asciiTrueとなっており、ASCII文字以外はエスケープされてしまう。

import json

data = {'name': '山田 太郎', 'age': 33}
out_file = open('./out.json', 'w')
json.dump(data, out_file)
out_file.close()
out.json
{"name": "\u5c71\u7530\u3000\u592a\u90ce", "age": 33}

そのため、日本語を使用するときは、ensure_asciiFalseにしておく。

import json

data = {'name': '山田 太郎', 'age': 33}
out_file = open('./out.json', 'w')
json.dump(data, out_file, ensure_ascii=False)
out_file.close()
out.json
{"name": "山田 太郎", "age": 33}

json.dump()でファイルにJSONを書き出すと、JSONがワンライナーで出力されます。
データが小さければ良いですが、大きなデータになってくると可読性が悪くなります。
そのようなときは、indentを指定することで、自動で整形してくれます。

import json

data = {'name': 'John Smith', 'age': 33}
out_file = open('./out.json', 'w')
json_data = json.dump(data, out_file, indent=4)
out_file.close()
out.json
{ "name": "John Smith", "age": 33 }
Liquidsのロゴ Liquids

Liquidsは誰でも投稿・編集ができる技術Wikiコミュニティ📝です。

あなたもLiquidsで技術Wikiを
書いてみませんか?