PythonのDictからJSON文字列に変換するにはjson.dumps()を使います。下記は簡単なコード例です。
dic1 = {"NAME": "Robert"}
dic1["ARRAY"] = [1,2,"A"]
dic1["AGE"] = 50
str1 = json.dumps(dic1)
print(str1)
上のコードは変数(dic1)に入れたデータをJSON文字列に変換しています。
printされた結果は「{“NAME”: “Robert”, “ARRAY”: [1, 2, “A”], “AGE”: 50}」このようにJSON文字列で出力されました。
また、このJSON文字列に 改行やインテントをキレイにつけて出力したい場合は下記のように記述します。
str1 = json.dumps(dic1, indent=2, separators=(',', ':'))
print(str1)
結果は、下記のようにインテントと改行が付きます
{
"NAME":"Robert",
"ARRAY":[
1,
2,
"A"
],
"AGE":50
}
Dictの中に、Decimalの値が入っている場合json.dumps()を実行すると 「Object of type Decimal is not JSON serializable」とエラーが出ます。その場合は、default引数を使ってDecimalの場合の処理を記述できます。
下記のコードはdictの変数にDecimalが入っている場合の対処コード例です。
dic1 = {"NAME": "Robert"}
dic1["RATE"] = decimal.Decimal(1.5)
str1 = json.dumps(dic1, indent=2, separators=(',', ':'), default=lambda _ : float(_) if isinstance(_, decimal.Decimal) else TypeError)
print(str1)
実行結果は下記です。
{
"NAME":"Robert",
"RATE":1.5
}