こんにちは、Kosei(@kay_diacc2)です!
JSONとは
JSON(JavaScript Object Notation)とは、JavaScriptのオブジェクト記法を用いたデータフォーマットです。JSONはJavaScriptだけでなく、Python、Ruby、Java、PHP、C++など様々なプログラミング言語に対応しているため、JSON形式データを経由することにより、言語間でのデータ交換を容易に実現させることができます。
JSON形式データの見方
JSON形式のデータは、キー(Key)とバリュー(Value)の組み合わせを1つのデータセットと見立てて表現されます。記載時は{}で囲み、キー・バリュー間にはコロン(:)を記載します。またエラー防止の注意点として、JSONの文字列は必ずダブルクォート( ” )で囲むようにします。
{"Key1":Value1}
複数のキー・バリュー・ペアを記述する場合は下記のように表現します。
{"Key1":Value1, "Key2":Value2, "Key3":Value3}
JSONで記述可能なデータ形式
JSONで記述できるデータ形式は下記になります。
- 文字列
- 整数
- 浮動小数点数
- ブール値
- リスト
- 辞書
- null値
データ形式が全てJSONで保持されるわけではない点に注意しましょう。例えば、Pythonで保持可能なFileオブジェクトやCSVのReader等はJSONで保持できません。
Pythonによるjsonモジュールの使い方解説
JSONファイルからデータを読み込む
まず、JSONファイルからデータを読み取る方法を解説します。下記のJSONサンプルファイルをPythonで読み込んだ場合のコード記述を示します。
{
"1":{
"name":"Tanaka",
"Age":24,
"Address":"Tokyo",
"mail":null
},
"2":{
"name":"Sato",
"Age":30,
"Address":"Osaka",
"mail":"sample@abcd.com"
}
}
import json
# JSONファイルがあるファイルパス
file_path = 'sample.json'
# Open関数でファイルをロード
with open(file_path) as f:
data = json.loads(f.read())
# 出力
print(data)
JSONデータをパースする
まず、パースとは一言で「構文解析」を意味します。PythonでJSONデータをパースするとは、JSON形式のデータから必要なデータを取り出し、Pythonプログラムの中で利用できるよう変換することを指します。
ここで、JSON-Python間のデータの変換処理を行う際、代表的なメソッドとして下記二つがあります。
- json.loads():JSONデータをPythonの値に変換
- json.dumps():Pythonの値をJSONデータに変換
実際にPythonコードを記載し、データ変換処理を体現してみましょう!
loads()関数でJSON読み込み
JSON形式データからPython値への変換は、json.loads()関数を用います。以下変換方法と出力結果を示します。
import json
#JSONデータ
json_data = '{"name":"Tanaka","Age":24,"Country":"Japan","Registered":true,"mail":null}'
#値変換:JSON → Python
json_data_to_python_value = json.loads(json_data)
print(json_data_to_python_value)
# json_data_to_python_valueの出力結果
# {'name': 'Tanaka',
# 'Age': 24,
# 'Country': 'Japan',
# 'Registered': True,
# 'mail': None}
json.loads関数の戻り値はPythonの辞書型です。辞書型は順序が保持されないため、出力値のキー・バリュー・ペアの順序は元のJSONと異なる場合があります。
dumps()関数でJSON書き出し
Pythonの値からJSON形式データへの変換は、json.dumps()関数を用います。以下変換方法と出力結果を示します。
import json
#Pythonデータ
python_dict = {'Registered':True,'Age':25,'name':'Tanaka','mail':None}
#値変換:Python → JSON
json_data = json.dumps(python_dict)
print(json_data)
# json_dataの出力結果
# '{"Registered": true, "Age": 25, "name": "Tanaka", "mail": null}'
最後に

お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら