Python ディクショナリをJSONにする(json.dumps/dump)

Pythonのディクショナリ(辞書)をJSONにエンコードするサンプルです。(確認環境:Python 3)

目次

サンプル ディクショナリを文字列のJSONにする(json.dumps関数)
ディクショナリをJSONにエンコードする
ディクショナリをファイルのJSONにする(json.dump関数)
ディクショナリをJSONにエンコードしてファイルに出力する

ディクショナリを文字列のJSONにする(json.dumps関数)

json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
  • json.dumps関数は、JSONにエンコードします。
  • 1つめの引数にオブジェクトを指定します。
  • 2つめ以降の引数は省略可能です。
  • 先頭にimport jsonの記述が必要です。
  • 以下はPython公式ドキュメントの JSON エンコーダおよびデコーダのリンクです。
    https://docs.python.org/ja/3/library/json.html

ディクショナリをJSONにエンコードする

# coding: utf-8
import json
 
a = {"t1":"赤",
	"t2":"黄",
	"t3":"青"}

b = json.dumps(a)

print (b) #{"t1": "\u8d64", "t2": "\u9ec4", "t3": "\u9752"}

c = json.dumps(a,ensure_ascii=False)

print (c) #{"t1": "赤", "t2": "黄", "t3": "青"}

d = json.dumps(a,ensure_ascii=False, indent=4)

print (d)
#{
#    "t1": "赤",
#    "t2": "黄",
#    "t3": "青"
#}

4~6行目は、ディクショナリです。
8行目は、json.dumps関数でJSONにしています。
10行目は、日本語が文字化けしています。
12行目は、2つめの引数にensure_ascii=Falseを指定しました。
14行目は、日本語が表示されています。
16行目は、3つめの引数にindent=4を指定しています。
19~23行目は、インデントされて表示されます。

 

ディクショナリをファイルのJSONにする(json.dump関数)

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
  • json.dump関数は、JSONにエンコードしてファイルに出力します。
  • 1つめの引数にオブジェクトを指定します。
  • 2つめ以降の引数は省略可能です。
  • 先頭にimport jsonの記述が必要です。
  • 以下はPython公式ドキュメントのJSON エンコーダおよびデコーダのリンクです。
    https://docs.python.org/ja/3/library/json.html#json.load

ディクショナリをJSONにエンコードしてファイルに出力する

# coding: utf-8
import json
 
a = {"t1":"赤",
	"t2":"黄",
	"t3":"青"}

file1 = open('test1.json','w')

json.dump(a,file1,ensure_ascii=False,indent=4)

file1.close()

4~6行目はディクショナリです。
8行目は、open関数でファイルをw(write)で開いています。
10行目は、json.dump関数でJSONを出力しています。

以下は、ファイルに出力されたjsonです。

{
    "t1": "赤",
    "t2": "黄",
    "t3": "青"
}

関連の記事

Python ディクショナリの仕組みと使い方(dictionary)
Python JSONをディクショナリにする(json.loads/load)

△上に戻る