Python3 JSONデータ解析
JSON (JavaScript Object Notation) は軽量なデータ交換フォーマットです。
JSONについてまだよく知らない場合は、まず私たちのJSONチュートリアル。
Python3では、jsonモジュールを使用してJSONデータをエンコード/デコードできます。これには2つの関数が含まれています:
- json.dumps(): データをエンコードします。
- json.loads(): データをデコードします。

jsonのエンコード/デコード処理中に、Pythonのプリミティブ型とJSON型は相互に変換されます。具体的な変換の対応は次のとおりです:
PythonからJSONへの型変換対応表:
| Python | JSON |
|---|---|
| dict | object |
| list, tuple | array |
| str | string |
| int, float, int- & float-derived Enums | number |
| True | true |
| False | false |
| None | null |
JSONからPythonへの型変換対応表:
| JSON | Python |
|---|---|
| object | dict |
| array | list |
| string | str |
| number (int) | int |
| number (real) | float |
| true | True |
| false | False |
| null | None |
json.dumps と json.loads の例
以下の例は、Pythonデータ構造をJSONに変換する方法を示しています:
例(Python 3.0+)
#!/usr/bin/python3
import json
# Pythonの辞書型をJSONオブジェクトに変換
data = {
'no' : 1,
'name' : 'サンプル',
'url' : 'https://www.example.com'
}
json_str = json.dumps(data)
print ("Pythonの元のデータ:", repr(data))
print ("JSONオブジェクト:", json_str)
上記のコードを実行すると、出力結果は次のようになります:
Python 原始数据: {'no': 1, 'name': 'サンプル', 'url': 'https://www.example.com'}
JSON 对象: {"no": 1, "name": "サンプル", "url": "https://www.example.com"}
出力結果からわかるように、単純な型はエンコード後、元のrepr()出力結果と非常に似ています。
上記の例に続いて、JSONエンコードされた文字列をPythonデータ構造に戻すことができます:
例(Python 3.0+)
#!/usr/bin/python3
import json
# Pythonの辞書型をJSONオブジェクトに変換
data1 = {
'no' : 1,
'name' : 'サンプル',
'url' : 'http://www.example.com'
}
json_str = json.dumps(data1)
print ("Pythonの元のデータ:", repr(data1))
print ("JSONオブジェクト:", json_str)
# JSONオブジェクトをPythonの辞書に変換
data2 = json.loads(json_str)
print ("data2['name']: ", data2['name'])
print ("data2['url']: ", data2['url'])
上記のコードを実行すると、出力結果は次のようになります:
Python 原始数据: {'name': 'サンプル', 'no': 1, 'url': 'http://www.example.com'}
JSON 对象: {"name": "サンプル", "no": 1, "url": "http://www.example.com"}
data2['name']: サンプル
data2['url']: http://www.example.com
文字列ではなくファイルを処理する場合は、次を使用できますjson.dump()とjson.load()JSONデータをエンコードおよびデコードします。例:
例(Python 3.0+)
# JSONデータを書き込む
with open('data.json', 'w') as f:
json.dump(data, f)
# データを読み取る
with open('data.json', 'r') as f:
data = json.load(f)
詳細については、以下を参照してください:https://docs.python.org/3/library/json.html その他の拡張