PythonでXMLファイルを扱いましたが、JSONフォーマットはWEB開発でさまざまに利用されています。
JSON(JavaScript Object Notation)は、JavaScriptをベースに作られた軽量のデータ交換フォーマットです。 XMLに比べて読みやすいですし、プログラム間でデータ交換をするための形式としてもとても優れていると言われています。
XMLの時と同様に、ここではJSONファイルについて扱っていこうと思います。
ここではXMLで使ったサンプルデータをJSONフォーマットで書いたものを用意しました。
{
"fruit":
[
{"name": "apple", "price": "100"},
{"name": "orange", "price": "200"}
]
}
このJSONフォーマットのデータをPythonを使って操作していこうと思います。
Pythonファイル上のJSONデータの読み込みと書き込み
このJSONデータはPythonの辞書型と同じ形式なので、Pythonのファイル上で扱うことができます。PythonでJSONを扱うにはjsonモジュールをインポートして使います。
Pythonファイル上にこのデータを記述し、printで出力してみるコードを書いてみましょう。
import json
fruits = {
"fruit":
[
{"name": "apple", "price": "100"},
{"name": "orange", "price": "200"}
]
}
print(fruits)
j = json.dumps(fruits)
print(j)
print(json.loads(j))
jsonモジュールをインポートします。JSONデータをそのまま記述し、変数fruitsに代入します。
それをそのままprintで出力するものと、dumps()で読み込んで出力するもの、loads()でスクリプト内に出力するものを書いています。
これを実行してみましょう。(ファイル名make_json.pyでAtomで実行しています。)
それぞれ出力されています。同じように見えますが、上側はPython形式、中側はダブルクォーテーションのJSON形式となっています。下側はPythonスクリプト内で使うためにdumps()で読み込み、loads()でオブジェクトしたものをprintでPython形式で出力しています。
シングルクォートとダブルクォートの違いに注意しましょう。
JSONファイルの書き込み
次はこのデータをJSONファイルを作成して書き込んでみましょう。
ファイルの作成にはwithステートメントを使ってみます。
こんなコードになります。
import json
fruits = {
"fruit":
[
{"name": "apple", "price": "100"},
{"name": "orange", "price": "200"}
]
}
with open("fruits.json", "w") as f:
json.dump(fruits, f)
withステートメントを使って、ファイル名をfruits.jsonと指定し、モードを”w”でファイルを開いて作成します。
これをfとして扱い、dump()を使ってJSONデータのfruitsをファイルに書き込みます。
実行するとこうなります。
同じ作業ディレクトリ内にfruits.jsonが作成されます。このファイルを開くと、横長で全部は見えませんが、上記右側のようにJSON形式で作成されています。
JSONファイルの読み込み
今度はこの作成したファイルのデータを読み込んでみましょう。
同じくwithステートメントを使って書いてみます。
import json
with open("fruits.json", "r") as f:
print(json.load(f))
ファイルの書き込みと同じようにwithステートメントでファイルを指定して開きます。ただし、ここは読み込みなのでモードを”r”にします。
読み込みはload()を使います。読み込んだデータをpirntで出力してみました。
実行するとこうなります。
JSONファイルから読み込まれたデータがPython形式で出力されているのがわかります。
まとめ
JSON(JavaScript Object Notation)は、JavaScriptをベースに作られた軽量のデータ交換フォーマットで、WEB開発やデータ交換などでさまざまに利用されています。
JSONデータは辞書型なのでとても読みやすく、Pythonでもjsonモジュールをインポートすれば、簡単に利用できます。
Pythonスクリプト上のJSONデータの読み込み書き込みにはdumps()、loads()を使い、JSONファイルの読み込み書き込みには、dump()、load()を使います。関数名のsがあるかどうかに注意しましょう。
同じ辞書型のデータでもPython形式はシングルクォート、JSON形式はダブルクォートで囲んでいるという違いがあることに注意しましょう。