アプリケーションで様々なデータをやり取りする際によく使用されるのが、「JSON」というデータ形式です。
PythonでJSONを扱う場合は、jsonモジュールを使ってデータを処理します。
今回の記事では、jsonモジュールの使い方について解説していきたいと思います。
Pythonのjsonモジュールとは
Pythonのjsonモジュールは、JSON形式のデータをPythonで扱うための標準ライブラリです。
JSONは、データをテキスト形式で保存・通信するためのフォーマットであり、Web APIや設定ファイル、データ交換など幅広い場面で利用されています。
例えば、以下のような形式でデータが構成されているのがJSONの特徴です。
{
"name": "Taro",
"age": 20,
"skills": ["Python", "SQL"]
}Pythonでは、このJSONデータを辞書(dict)やリスト(list)として扱えます。
import json
json_data = '{"name": "Taro", "age": 20}'
data = json.loads(json_data)
print(data)
print(type(data)){'name': 'Taro', 'age': 20}
<class 'dict'>このように、jsonモジュールを使うことで、JSONとPythonオブジェクトを相互変換できます。
JSONの読み込み機能でデータを解析・変換する方法
それでは、実際にJSONデータを変換する方法について確認していきましょう。
ファイルから読み込む「load」と文字列から読み込む「loads」の違いとは
JSONデータをPythonオブジェクトへ変換する操作を 「デシリアライズ」 と呼びます。
jsonモジュールでデシリアライズする方法には、主に次の2種類があります。
- load … ファイルからの読み込み
- loads … 文字列からの読み込み
load関数は、JSONファイルを直接読み込むための関数です。
例えば、以下のような sample.json ファイルが存在するとします。
{
"name": "Hanako",
"age": 25
}これを load を使って読み込み場合、以下のように記述します。
import json
with open("sample.json", "r", encoding="utf-8") as f:
data = json.load(f)
print(data){'name': 'Hanako', 'age': 25}open関数でファイルオブジェクトを取得し、 load関数に取得したファイルオブジェクトを渡すことで読み込みできます。
一方、loads関数はJSON文字列をPythonオブジェクトへ変換します。
import json
json_text = '{"language": "Python", "version": 3.12}'
data = json.loads(json_text)
print(data){'language': 'Python', 'version': 3.12}文字列データを直接解析したい場合に便利です。
Web APIやローカルファイルからデータを安全にデシリアライズする手順とは
実際のプログラムでは、JSONデータが常に正常であるとは限りません。
特にAPI通信では、不正なJSONや空データが返るケースもあります。
そのため、データを安全に読み込むには、以下のような流れで対策することが重要です。
1, データ取得
2, 文字コード確認
3, JSON解析
4, 例外処理
JSONのdumpsを使ってデータを文字列に変換・出力する手法
続いては、データをJSONへ変換する方法について見ていきましょう。
文字列を生成する「dumps」とファイルへ書き出す「dump」の使い分けとは
データをJSONへ変換する操作は、反対に 「シリアライズ」 と呼ばれます。
シリアライズする方法は以下の2通りです。
- dumps … JSON文字列へ変換
- dump … ファイルに書き込み
dumpsは、JSON文字列を生成する関数です。
import json
data = {
"name": "Sato",
"score": 88
}
json_text = json.dumps(data)
print(json_text)
print(type(json_text)){"name": "Sato", "score": 88}
<class 'str'>指定のデータを、JSON形式の文字列に変換して取得できます。
API送信用のデータ生成などでよく使われています。
一方、dump関数は指定のデータをJSONファイルへ直接書き込みます。
import json
data = {
"product": "Keyboard",
"price": 5000
}
with open("output.json", "w", encoding="utf-8") as f:
json.dump(data, f)上記のようなコードを実行することで、JSONファイルにデータを書き込むことができます。
indentやsort_keysオプションを用いたJSONデータの整形方法とは
JSONは、整形して出力することで可読性が大きく向上します。
例えば、dumps関数の引数に indentを指定することで、改行と字下げを追加できます。
import json
data = {
"name": "Tanaka",
"age": 30,
"skills": ["Python", "Linux"]
}
json_text = json.dumps(data, indent=4)
print(json_text){
"name": "Tanaka",
"age": 30,
"skills": [
"Python",
"Linux"
]
}この方法は、ログ出力や設定ファイル保存時などに役立ちます。
また、sort_keys=Trueを指定すると、キーをアルファベット順に並び替えることもできます。
import json
data = {
"z": 1,
"a": 2,
"m": 3
}
json_text = json.dumps(data, indent=4, sort_keys=True)
print(json_text){
"a": 2,
"m": 3,
"z": 1
}Git管理時の差分確認などがしやすくなるため、実務でもよく使われている方法です。
実務で必須となる日本語の文字化け対策とエラーハンドリング
JSONを扱う上では、文字化けやエラーに対する対策が必須となります。
それぞれの対策方法についても見ていきましょう。
ensure_asciiオプションを用いた日本語出力の最適化とは
日本語が含まれるJSONを出力すると、デフォルトではUnicodeエスケープした状態で出力されます。
import json
data = {
"message": "こんにちは"
}
print(json.dumps(data)){"message": "\u3053\u3093\u306b\u3061\u306f"}プログラムの動作としては正しいものとなりますが、実際に読み取るのは難しい状態です。
これを解消するために、ensure_ascii=Falseを指定します。
print(json.dumps(data, ensure_ascii=False)){"message": "こんにちは"}このオプションを使用することで、日本語をそのまま表示できます。
JSONDecodeErrorを適切に処理する例外処理の記述方法とは
JSON解析を行う際は、エラーハンドリングが非常に重要となります。
基本的な例外処理は、次のように記述します。
import json
json_text = '{"name": "Yamada", "age": 20'
try:
data = json.loads(json_text)
except json.JSONDecodeError as e:
print("JSON解析エラー")
print(e)JSON解析エラー
Expecting ',' delimiter: line 1 column 30 (char 29)エラー内容を表示することで、調査の際に原因を特定しやすくなります。
JSONを扱い際は、必ずエラーハンドリングを実装するようにしましょう。
まとめ
Pythonのjsonモジュールは、Web APIや設定ファイル処理などで頻繁に利用される重要な機能です。
基本的な読み書きだけでなく、エラーハンドリングや文字コード対策までしっかり理解しておくことで、より安全で実践的なプログラムを作成できるようになります。
Pythonの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Pythonに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。