【python】JSONって何?(超簡単解説)

JSONファイルの読み書き、エラーが出て「またか…」とため息をついていませんか?手作業でデータを整形したり、APIからのレスポンスを一つずつ確認したりするの、本当に面倒ですよね。

分かります。そのイライラ、私も経験済みです。

でも安心してください!Pythonを使えば、そんな面倒な作業はあっという間に解決できます。この記事では、初心者の方でもコピペでサクッと使えるJSONファイルの読み書き方法を解説します。これをマスターすれば、API連携の基礎もバッチリ!今日からあなたも「楽するエンジニア」の仲間入りです。

JSONって何?

「JSONってよく聞くけど、結局何?」そう思っている方もいるかもしれませんね。

JSON(JavaScript Object Notation)は、データ交換によく使われる軽量なデータ形式です。人間が読んでも分かりやすく、コンピューターが処理するのも簡単、という特徴があります。

イメージとしては、Pythonの「辞書(dict)」や「リスト(list)」にとても似ています。

  • キーと値のペアでデータを表現 { "name": "太郎", "age": 30 }
  • データのリストを表現 [ "Apple", "Banana", "Orange" ]

主にWeb APIなどでデータをやり取りする際に使われることが多く、現代のアプリケーション開発には欠かせない存在です。

PythonでJSONを扱うための準備

PythonでJSONを扱うのはとても簡単です。特別なライブラリのインストールは不要!Pythonに標準で組み込まれているjsonモジュールを使います。

まずは、Pythonのコードの先頭に以下の一行を追加するだけです。

python
import json

これで準備完了!次に具体的な読み書きの方法を見ていきましょう。

【実践】JSONファイルを読み込んでみよう!

まずは、既存のJSONファイルをPythonで読み込む方法から解説します。

1. サンプルJSONファイルを用意する

以下の内容をsample.jsonという名前で保存してください。

json
{
"name": "山田太郎",
"age": 28,
"city": "東京",
"hobbies": ["読書", "プログラミング", "料理"],
"is_active": true,
"email": null
}

2. JSONファイルを読み込むPythonコード

以下のコードを同じフォルダにread_json.pyとして保存し、実行してみてください。

“`python

read_json.py

import json

読み込むJSONファイルのパス

file_path = ‘sample.json’

ファイルを開いてJSONデータを読み込む

try:
with open(file_path, ‘r’, encoding=’utf-8′) as f:
data = json.load(f)

print("JSONファイルを読み込みました!")
print(data)
print(f"データの型: {type(data)}")

# 読み込んだデータにアクセスしてみよう
print(f"名前: {data['name']}")
print(f"年齢: {data['age']}")
print(f"趣味: {data['hobbies'][0]}")

except FileNotFoundError:
print(f”エラー: ‘{file_path}’ が見つかりませんでした。ファイル名を確認してください。”)
except json.JSONDecodeError as e:
print(f”エラー: JSONの形式が正しくありません。詳細: {e}”)
except Exception as e:
print(f”予期せぬエラーが発生しました: {e}”)

“`

実行結果例

JSONファイルを読み込みました!
{'name': '山田太郎', 'age': 28, 'city': '東京', 'hobbies': ['読書', 'プログラミング', '料理'], 'is_active': True, 'email': None}
データの型: <class 'dict'>
名前: 山田太郎
年齢: 28
趣味: 読書

コード解説

  • import json: Pythonに標準で搭載されているjsonモジュールをインポートしています。
  • file_path = 'sample.json': 読み込みたいJSONファイルのパスを指定します。
  • with open(file_path, 'r', encoding='utf-8') as f::
    • open()関数でファイルを開きます。
    • 'r'は「読み込み(read)モード」であることを示します。
    • encoding='utf-8'は、日本語などの文字を正しく処理するための指定です。これを指定しないと文字化けすることがあります。
    • withを使うと、ファイルの開閉を自動で行ってくれるので、閉じ忘れの心配がなく安心です。
  • data = json.load(f): json.load()がJSONファイルをPythonのデータ構造(辞書やリスト)に変換する役割を担っています。この変換処理を「デシリアライズ」と呼びます。

これで、JSONファイルの中身がPythonで扱いやすい辞書やリストとしてdata変数に入りました。あとは通常のPythonデータと同じように、キーを指定して値にアクセスできます。

【実践】PythonのデータをJSONファイルに書き込んでみよう!

次に、Pythonのデータ(辞書やリスト)をJSONファイルとして保存する方法です。

1. PythonデータをJSONファイルに書き込むコード

以下のコードをwrite_json.pyとして保存し、実行してみてください。

“`python

write_json.py

import json

Pythonの辞書データを用意

python_data = {
“product_name”: “スマートウォッチ”,
“price”: 15000,
“available”: True,
“colors”: [“ブラック”, “シルバー”, “ピンク”],
“specs”: {
“display”: “AMOLED”,
“battery_life”: “7 days”
}
}

書き込むJSONファイルのパス

output_file_path = ‘output.json’

ファイルを開いてPythonデータをJSON形式で書き込む

try:
with open(output_file_path, ‘w’, encoding=’utf-8′) as f:
# json.dump()を使って書き込む
# indent=4: JSONを見やすく整形(インデント4スペース)
# ensure_ascii=False: 日本語がそのまま表示されるようにする
json.dump(python_data, f, indent=4, ensure_ascii=False)

print(f"Pythonデータを'{output_file_path}'に書き込みました!")

except Exception as e:
print(f”エラーが発生しました: {e}”)

“`

実行結果例

特にエラーメッセージが出なければ成功です。同じフォルダにoutput.jsonというファイルが生成されます。

output.jsonの中身は以下のようになっているはずです。

json
{
"product_name": "スマートウォッチ",
"price": 15000,
"available": true,
"colors": [
"ブラック",
"シルバー",
"ピンク"
],
"specs": {
"display": "AMOLED",
"battery_life": "7 days"
}
}

コード解説

  • python_data = { ... }: JSONとして保存したいPythonの辞書データを作成します。
  • with open(output_file_path, 'w', encoding='utf-8') as f::
    • 'w'は「書き込み(write)モード」であることを示します。もし指定したファイルが存在しない場合は新規作成され、存在する場合は上書きされますので注意してください。
    • encoding='utf-8'は読み込み時と同様、文字化け防止のためです。
  • json.dump(python_data, f, indent=4, ensure_ascii=False): json.dump()がPythonのデータをJSON形式に変換し、ファイルに書き込む役割を担っています。この変換処理を「シリアライズ」と呼びます。
    • indent=4: JSONファイルは通常、1行にまとめて書かれますが、これでは人間には読みにくいです。indent引数に数値を指定すると、その数だけスペースを空けて整形してくれます。今回の例では4スペースでインデントしています。
    • ensure_ascii=False: これを指定しないと、日本語などの非ASCII文字が\u30b9\u30de\u30fc\u30c8のようにエスケープされて書き込まれてしまいます。Falseにすることで、日本語がそのままの形で保存され、ファイルが見やすくなります。

【応用】文字列としてJSONデータを扱う (loadsとdumps)

ここまではファイルとしてJSONを読み書きする方法でしたが、時にはファイルではなく「Pythonの文字列」としてJSONデータを扱いたい場面があります。例えば、Web APIからのレスポンスが直接JSON形式の文字列として返ってくる場合などです。

そんなときに役立つのがjson.loads()json.dumps()です。

  • json.loads(): JSON形式の文字列をPythonのデータ(辞書やリスト)に変換します。(load string)
  • json.dumps(): PythonのデータをJSON形式の文字列に変換します。(dump string)

名前にsが付いているのが特徴です。

“`python
import json

1. JSON形式の文字列をPythonデータに変換 (loads)

json_string_input = ‘{“user_id”: 101, “username”: “田中”, “is_admin”: false}’

data_from_string = json.loads(json_string_input)
print(“— JSON文字列からPythonデータへ —“)
print(“変換されたデータ:”, data_from_string)
print(“データの型:”, type(data_from_string))
print(“ユーザー名:”, data_from_string[‘username’])

2. PythonデータをJSON形式の文字列に変換 (dumps)

python_data_to_string = {
“event”: “page_view”,
“timestamp”: “2023-10-27T14:30:00Z”,
“page_url”: “/products/detail/123”,
“user”: {“id”: 202, “country”: “JP”}
}

indentとensure_asciiはdumpと同様に使える

json_string_output = json.dumps(python_data_to_string, indent=2, ensure_ascii=False)
print(“\n— PythonデータからJSON文字列へ —“)
print(“変換された文字列:\n”, json_string_output)
print(“文字列の型:”, type(json_string_output))
“`

実行結果例

“`
— JSON文字列からPythonデータへ —
変換されたデータ: {‘user_id’: 101, ‘username’: ‘田中’, ‘is_admin’: False}
データの型: <class ‘dict’>
ユーザー名: 田中

— PythonデータからJSON文字列へ —
変換された文字列:
{
“event”: “page_view”,
“timestamp”: “2023-10-27T14:30:00Z”,
“page_url”: “/products/detail/123”,
“user”: {
“id”: 202,
“country”: “JP”
}
}
文字列の型: <class ‘str’>
“`

json.load() / json.dump()json.loads() / json.dumps() の違いまとめ

| 関数名 | 役割 | 対象 |
| :————- | :—————————————– | :———– |
| json.load() | JSONファイル → Pythonデータ | ファイル |
| json.dump() | Pythonデータ → JSONファイル | ファイル |
| json.loads() | JSON文字列 → Pythonデータ | 文字列 |
| json.dumps() | Pythonデータ → JSON文字列 | 文字列 |

どちらも「Pythonデータ ⇔ JSON」の変換を行うことに変わりはありませんが、ファイルと直接やり取りするか、それとも文字列として扱うか、という違いです。

なぜJSONファイルの読み書きがAPI連携の基礎なの?

ここまでJSONファイルの読み書きを学んできましたが、「これがなぜAPI連携の基礎なの?」と思うかもしれません。

実は、Webの世界ではAPI(Application Programming Interface:プログラム同士が情報をやり取りするための窓口)からのデータ形式として、JSONが圧倒的に多く使われています

例えば、

  • 天気予報APIから現在の天気情報をJSON形式で受け取る
  • SNSのAPIから特定のユーザーの投稿履歴をJSON形式で取得する
  • 自社のシステムから別のシステムへ、処理結果のデータをJSON形式で送信する

といった場面で、今日学んだ知識がそのまま役立ちます。APIから受け取ったJSON形式の文字列をjson.loads()でPythonデータに変換して処理したり、Pythonで作ったデータをjson.dumps()でJSON形式の文字列にしてAPIに送ったりするわけです。

JSONの読み書きは、Pythonを使ったWebスクレイピングやWebアプリケーション開発、そして様々なシステムの自動連携において、まさに「土台」となる非常に重要なスキルです!

まとめ

お疲れ様でした!この記事では、Pythonを使ったJSONファイルの読み書きについて、初心者の方でもコピペで使えるように解説しました。

  • JSONはデータ交換によく使われる、人間にもコンピューターにも分かりやすいデータ形式です。
  • Pythonのjsonモジュールを使えば、JSONファイルを簡単に読み書きできます。
  • json.load()json.dump()ファイルを、json.loads()json.dumps()文字列を扱います。
  • indent=4で整形、ensure_ascii=Falseで日本語をきれいに表示できます。
  • JSONの読み書きは、Web APIと連携する上で必須の基礎スキルです。

これであなたもJSONファイルを自在に操れるようになったはずです。最初はコピペからで大丈夫!慣れてきたら、ぜひ色々なAPIと連携して、業務効率化の幅を広げてみてください。きっと「もっと早くやればよかった!」と思うくらい、楽になるはずです。

応援しています!

コメント

タイトルとURLをコピーしました