Python JSON
JSONは、データを保存および交換するための構文です。
JSONはテキストであり、JavaScriptオブジェクト表記で記述されています。
PythonのJSON
json
Pythonには、 JSONデータの操作に使用できると呼ばれる組み込みパッケージがあります。
例
jsonモジュールをインポートします。
import json
JSONの解析-JSONからPythonに変換
JSON文字列がある場合は、
json.loads()
メソッドを使用して解析できます。
結果はPython辞書になります。
例
JSONからPythonへの変換:
import json
# some JSON:
x = '{ "name":"John", "age":30, "city":"New
York"}'
# parse x:
y = json.loads(x)
# the result is a
Python dictionary:
print(y["age"])
PythonからJSONに変換する
Pythonオブジェクトがある場合は、json.dumps()
メソッドを使用してそれをJSON文字列に変換できます。
例
PythonからJSONへの変換:
import json
# a Python object (dict):
x = {
"name":
"John",
"age": 30,
"city": "New York"
}
#
convert into JSON:
y = json.dumps(x)
# the result is a JSON string:
print(y)
次のタイプのPythonオブジェクトをJSON文字列に変換できます。
- dict
- リスト
- タプル
- ストリング
- int
- 浮く
- 真
- 誤り
- なし
例
PythonオブジェクトをJSON文字列に変換し、値を出力します。
import json
print(json.dumps({"name": "John", "age": 30}))
print(json.dumps(["apple",
"bananas"]))
print(json.dumps(("apple", "bananas")))
print(json.dumps("hello"))
print(json.dumps(42))
print(json.dumps(31.76))
print(json.dumps(True))
print(json.dumps(False))
print(json.dumps(None))
PythonからJSONに変換すると、Pythonオブジェクトは同等のJSON(JavaScript)に変換されます。
Python | JSON |
---|---|
dict | Object |
list | Array |
tuple | Array |
str | String |
int | Number |
float | Number |
True | true |
False | false |
None | null |
例
すべての有効なデータ型を含むPythonオブジェクトを変換します。
import json
x = {
"name":
"John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann","Billy"),
"pets":
None,
"cars": [
{"model": "BMW 230", "mpg":
27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}
print(json.dumps(x))
結果をフォーマットする
上記の例ではJSON文字列が出力されますが、インデントや改行がないため、読みやすくはありません。
このjson.dumps()
メソッドには、結果を読みやすくするためのパラメーターがあります。
例
このパラメーターを使用してindent
、インデントの数を定義します。
json.dumps(x, indent=4)
区切り文字を定義することもできます。デフォルト値は( "、"、 ":")です。これは、コンマとスペースを使用して各オブジェクトを区切り、コロンとスペースを使用してキーを値から区切ることを意味します。
例
separators
パラメータを使用して、デフォルトの区切り文字を変更します。
json.dumps(x, indent=4, separators=(". ", " = "))
結果を注文する
このjson.dumps()
メソッドには、結果のキーを並べ替えるためのパラメーターがあります。
例
パラメータを使用してsort_keys
、結果を並べ替える必要があるかどうかを指定します。
json.dumps(x, indent=4, sort_keys=True)