PythonでJSONデータを読み込み、処理する
開発環境は、Windows 10 Pro(64bit) + Python 3.7.6。
PythonでJSONをパースする場合、組み込みのパッケージであるjsonパッケージを使います。
使い方には、JSONファイル自体を読み込む場合と、JSON形式の文字列の場合の2パターンがあります。
JSONファイルを読み込む場合
試しに、以下のjsonファイルをprof.jsonという名前で保存します。
{ "name": "Json Taro", "age": 10, "hobby": "Writing json" }
次にJSONパースするためのPythonのプログラム(名前はparser.pyとします)を書きます。
import json json_file = open("prof.json", "r") print(json.load(json_file))
結果は、以下の通り。
個別にデータを取り出す場合は、
import json json_file = open("prof.json", "r") loaded_json_file = json.load(json_file) print(loaded_json_file["name"]) print(loaded_json_file["age"]) print(loaded_json_file["hobby"])
という風にします。
JSON形式の文字列を処理する場合
import json json_string = '{"name": "Json Hanako", "age":13, "hobby": "Writing json."}' loaded_json_string = json.loads(json_string) print(loaded_json_string["name"]) print(loaded_json_string["age"]) print(loaded_json_string["hobby"])
結果は以下のようになります。
コマンドラインからJSON文字列を処理する場合
Pythonでコマンドライン引数を取得する場合、受け取った文字列にスペースがある場合は、スペースの直前までしか、文字列として取得できません。その場合は、ダブルクォーテーションで囲う必要があります(シングルクォーテーションだと機能しない)。また、ダブルクォーテーションの中でダブルクォーテーションを使いたければ、\"としておかないといけません。コマンドライン引数で、JSON形式の文字列を渡す場合、以下のようになります。
python parser.py "{\"name\": \"Json Hanako\", \"age\":13, \"hobby\": \"Writing json.\"}"
受け取るPythonファイルは以下のようになります
import json import sys json_string = sys.argv[1] loaded_json_string = json.loads(json_string) print(loaded_json_string["name"]) print(loaded_json_string["age"]) print(loaded_json_string["hobby"])
結果は以下のようになります。