https://a.storyblok.com/f/270183/1368x665/5a86bfc7c5/25mar_dev-blog_json-python.jpg

PythonでJSONを扱う方法:初心者のためのガイド

最終更新日 March 18, 2025

所要時間:1 分

JSON(JavaScript Object Notation)は、ウェブアプリケーションとサーバー間でデータを交換するためにAPIを使用するときによく使われます。軽量で、人間が読むことができ、解析が簡単です。

Pythonでは、組み込みの jsonモジュールのおかげで簡単です。

PythonでJSONを扱う準備はできましたか?さっそく始めましょう!

JSONとは何か?

JSONは、キーと値のペアを使用して構造化されたデータを表すテキストベースのフォーマットです。以下は、ネットワークAPIのレスポンスから抜粋したシンプルなJSONの例です:

{
    "phoneNumber": "+99012345678",
    "location": {
        "latitude": 50.735851,
        "longitude": 7.10066,
    },
    "is_active": true
}

JSONはさまざまなデータ型をサポートしている:

  • 文字列(例: "+99012345678")

  • Numbers(例:25、50.7358)

  • ブーリアン(または )

  • (null)

  • オブジェクト(Pythonの辞書に似た、キーと値のペア)

  • 配列(値のリスト。Pythonのリストに似ている)

PythonでJSONを扱う方法

Pythonは組み込みの jsonモジュールが標準ライブラリに組み込まれており、JSON データを扱うことができます。これをインポートするには

import json

JSONデータの解析

JSONデータは通常Python辞書に変換されます。文字列として表現されたJSONデータをパースして変換するには json.loads()

json_data = '{"name": "Maria", "age": 25, "city": "Madrid"}' # string
parsed_data = json.loads(json_data) # Python dict

print(parsed_data["name"]) # prints “Maria”

json.loads()は、APIレスポンスからJSONをパースするために使用するメソッドです。

PythonオブジェクトをJSONに変換する

Python オブジェクトを JSON フォーマットの文字列に変換(シリアライズ)するには json.dumps()

python_dict = {"name": "John", "city": "London"}
json_string = json.dumps(python_dict)

print(json_string) # prints '{"name": "John", "city": "London"}'

また、JSON出力を読みやすいようにインデントでフォーマットすることもできる:

formatted_json = json.dumps(python_dict, indent=4)
print(formatted_json)

もちろん、無効なJSONフォーマットは例外をスローします。これらのエラーは通常のPythonの例外処理を使って処理しなければなりません:

try:
    invalid_json = '{"name": "John", "age": 30,}'  # Incorrect JSON
    parsed_data = json.loads(invalid_json)
except json.JSONDecodeError as e:
    print("Error decoding JSON:", e)

JSONファイルの読み書き

JSONデータをファイルに書き出すには json.dump():

with open("data.json", "w") as file:
    json.dump(python_dict, file, indent=4)

ファイルからJSONデータを読み込むには json.load():

with open("data.json", "r") as file:
    data = json.load(file) # data is a Python dict
    print(data)

他のPythonデータ型をJSONにシリアライズする

これまでの例では、Python辞書をシリアライズする方法を見てきました。しかし、Pythonでは他のデータ型をJSON形式にシリアライズすることができます:

リストはJSONシリアライゼーションで当然サポートされている:

list_data = ["one", "two", "three"]
json_list = json.dumps(list_data)
print(json_list)  #  ["one", "two", "three"]

タプルはJSONリストに変換できる:

tuple_data = ("one", "two", "three")
json_tuple = json.dumps(tuple_data)
print(json_tuple)  #  ["one", "two", "three"]

Python の集合はシリアライズの前にリストに変換する必要があります:

set_data = {1, 2, 3, 4}
json_set = json.dumps(list(set_data))
print(json_set)  # [1, 2, 3, 4]

最後に、カスタム・オブジェクトをシリアライズするには、カスタム・エンコーダー関数を実装しなければならない:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

def person_encoder(obj):
    if isinstance(obj, Person):
        return {"name": obj.name, "age": obj.age}
    raise TypeError("Object of type Person is not JSON serializable")

person = Person("Maria", 30)
json_person = json.dumps(person, default=person_encoder)
print(json_person) # {"name": "Alice", "age": 30}

結論

他のフォーマット(XML、私たちはあなたを見ています!)とは逆に、PythonでJSONを扱うのはシンプルで効率的です。Pythonの標準ライブラリには jsonパッケージが含まれているからです。JSONをマスターすることは、特にAPIレスポンスを解析するときに、API統合を改善するのに役立ちます。

質問や共有したいことがありますか?Vonageコミュニティ VonageコミュニティSlackまたは 開発者向けニュースレターでフォローしてください。 X(旧Twitter)YouTubeチャンネル YouTubeチャンネルビデオチュートリアルを購読する。 LinkedInのVonage開発者ページ開発者が学び、コミュニティとつながるためのスペースです。つながりを維持し、進捗状況を共有し、最新の開発者向けニュース、ヒント、イベントを把握してください!

シェア:

https://a.storyblok.com/f/270183/405x400/2b811a162d/alvaro-navarro.jpg
Alvaro Navarroシニア・デベロッパー・アドボケイト

AlvaroはVonageの開発者支持者であり、ネットワークAPIに焦点を当てています。デベロッパーエクスペリエンス、API、オープンソースに情熱を注ぐ。仕事以外では、コミックショップを探検したり、SFやホラーフェスティバルに参加したり、有名な小さなプラスチックブロックで何かを作ったりしているところをよく見かける。