Python JSON 解析: シリアル化と逆シリアル化
Python で JSON データを読み取り、書き込み、解析する方法を学びます。 json.loads、json.dumps、および JSON エンコーダー/デコーダーのカスタマイズをマスターします。
概要
JSON (JavaScript Object Notation) は、最新の Web API、構成、データベース ペイロードを支配する軽量のデータ交換形式です。 JSON 構造は Python の辞書やリストに似ているため、それらの間の翻訳は驚くほどシームレスです。 Python には組み込みの「json」モジュールが装備されており、JSON 文字列を Python オブジェクトに解析したり、Python オブジェクトを JSON 文字列に変換したりすることが簡単になります。
Python オブジェクト (辞書など) を生の JSON 文字列に変換するプロセスは、シリアル化またはエンコードと呼ばれます。これは、`json.dumps()` (文字列の場合) および `json.dump()` (ファイルへの直接書き込みの場合) によって処理されます。 JSON を整形するための「indent」や、属性をアルファベット順に並べるための「sort_keys」などの書式設定パラメータを制御できます。逆に、JSON 文字列を Python 辞書に解析することは逆シリアル化と呼ばれ、「json.loads()」および「json.load()」を介して実行されます。
文字列、数値、リスト、辞書などの標準的な Python 型は自動的に JSON にシリアル化されますが、カスタム オブジェクト (クラスや日時オブジェクトなど) は自動的にシリアル化されません。カスタム オブジェクトを直接エンコードしようとすると、「TypeError」が発生します。これを克服するには、開発者は「json.JSONEncoder」を継承するカスタム エンコーダ クラスを作成し、「.default()」メソッドをオーバーライドしてクラスを読み取り可能な辞書にシリアル化する必要があります。 JSON 操作をマスターすることが、外部 Web サービスと通信するための鍵となります。
コードと実行の出力
辞書を JSON 文字列に変換し、組み込みの json ライブラリを使用して解析し直します。
import json
# Python Dictionary representing a user profile
user_profile = {
"name": "Alex",
"is_premium": True,
"skills": ["Python", "Docker"],
"age": 28
}
# Serialize dictionary to JSON string
json_string = json.dumps(user_profile, indent=2)
print("--- JSON String ---")
print(json_string)
# Deserialize JSON string back to dictionary
parsed_dict = json.loads(json_string)
print("\n--- Parsed Python Dictionary ---")
print(f"Name: {parsed_dict['name']}")
print(f"First Skill: {parsed_dict['skills'][0]}")--- JSON String ---
{
"name": "Alex",
"is_premium": true,
"skills": [
"Python",
"Docker"
],
"age": 28
}
--- Parsed Python Dictionary ---
Name: Alex
First Skill: Python段階的な実装
- ペイロードの送信と REST API からのデータの読み取り
- settings.json ファイル内に構成設定を保存する
- マイクロサービス間で構造化ペイロードを渡す
よくある質問
json.dump と json.dumps の違いは何ですか?
json.dump (「s」なし) は、JSON データをファイル ストリームに直接書き込みます。 json.dumps (「s」を含む) は、データを Python 文字列変数にシリアル化します。
JSON デコードエラーはどのように処理しますか?
「json.JSONDecodeError」をキャッチする try/excel ブロックで解析コードをラップし、不正な形式の JSON 文字列を適切に処理します。
関連トピック
Python 辞書をマスターしましょう。キーと値のペアのデータを保存、取得、処理する方法を学びます。マッピングのパフォーマンスとベスト プラクティスを理解します。
Python ファイル I/OPython でファイルを読み書きする方法を学びます。 open()、read()、write()、およびコンテキスト マネージャーをマスターして、リソース リークを発生させずにファイル操作を安全に処理します。
Python CSVPython で CSV データを処理する方法を学びます。効率的なテーブル解析のために csv.reader、csv.writer、および DictReader/DictWriter をマスターします。
推奨される Python リソース
関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。
Python で JSON ファイルを読み取って解析する方法
組み込みの json モジュールを使用して、Python で JSON ファイルを読み取り、解析し、ロードする方法を学びます。 JSON 文字列から辞書への変換、またはその逆の変換をマスターします。
Python 文字列メソッドのチートシート
Python 文字列操作の完全なリファレンス ガイド。文字列プロパティの書式設定、検索、分割、置換、チェックをマスターします。
Python と JavaScript: どちらのプログラミング言語が最適ですか?
Python と JavaScript の包括的な比較。構文の違い、パフォーマンス、使用例 (バックエンドとフロントエンド)、およびコーディング例を調べます。