Python で JSON ファイルを読み取って解析する方法
組み込みの json モジュールを使用して、Python で JSON ファイルを読み取り、解析し、ロードする方法を学びます。 JSON 文字列から辞書への変換、またはその逆の変換をマスターします。
概要
JSON (JavaScript Object Notation) は、API、構成ファイル、およびデータ ストレージで最も一般的なデータ形式です。 Python には、JSON データの読み取り、解析、書き込みを驚くほど簡単にする組み込みの「json」モジュールが付属しています。 JSON オブジェクトは Python 辞書に完全にマップされ、JSON 配列は Python リストにマップされるため、JSON の操作はネイティブに感じられます。
外部ファイルから JSON を読み取るには、「json.load()」関数を使用します。この関数は、ファイル ストリームを解析し、JSON 構造を Python データ型に変換します。 JSON データがすでに文字列としてメモリにロードされている場合は、代わりに `json.loads()` 関数を使用します (「s」は文字列を表します)。正しい関数を選択すると、パーサーのクラッシュが防止されます。
JSON を使用する場合は、エンコードと潜在的なフォーマット エラーを処理することがベスト プラクティスです。 `open()` ステートメント内で `encoding="utf-8"` を使用すると、スクリプトが特殊文字で失敗することがなくなります。ファイル操作を「json.JSONDecodeError」をキャッチする「try-excel」ブロックでラップすると、JSON ファイルの形式が不正な場合にアプリが適切に機能低下することが保証されます。
コードと実行の出力
このコードは、サンプル JSON ファイルの作成、それを読み取って解析して Python 辞書に戻す方法、および JSON 文字列を処理する方法を示しています。
import json
# Let's write a mock JSON file first
sample_data = {
"user": "developer123",
"skills": ["python", "javascript", "sql"],
"active": True
}
with open("data.json", "w", encoding="utf-8") as f:
json.dump(sample_data, f, indent=4)
# 1. Reading from a JSON file (using json.load)
with open("data.json", "r", encoding="utf-8") as file:
data_from_file = json.load(file)
print("File Content type:", type(data_from_file).__name__)
print("User skill list:", data_from_file["skills"])
# 2. Reading from a JSON string (using json.loads)
json_string = '{"host": "localhost", "port": 5432, "ssl": false}'
data_from_str = json.loads(json_string)
print("\nString Content type:", type(data_from_str).__name__)
print("Database host:", data_from_str["host"])File Content type: dict
User skill list: ['python', 'javascript', 'sql']
String Content type: dict
Database host: localhost段階的な実装
- 組み込みの json モジュールをスクリプトにインポートします。
- open("filename.json", "r", encoding="utf-8") をファイルとして使用して、JSON ファイルを開きます。
- ファイル オブジェクトを json.load(file) に渡し、内容を解析して Python 辞書に入れます。
- すでにメモリにロードされている生の JSON 文字列を解析する必要がある場合は、 json.loads(string_data) を使用します。
よくある質問
json.load() と json.loads() の違いは何ですか?
json.load() はファイルのようなストリーム オブジェクト (ディスクからの読み取り) を受け入れますが、json.loads() は JSON コンテンツを含む標準の文字列またはバイト オブジェクト (メモリからの読み取り) を受け入れます。
カスタム クラスの JSON シリアル化エラーはどのように処理すればよいですか?
Python の json モジュールは、デフォルトではカスタム クラス インスタンスをシリアル化できません。 json.JSONEncoder を拡張するカスタム エンコーダ クラスを提供するか、最初にヘルパー メソッドを使用してインスタンスの属性を辞書に抽出する必要があります。
関連トピック
Python でファイルを読み取る方法を学びます。 with open ステートメント、readline、readlines、およびファイル例外の安全な処理をマスターします。
Python でファイルに書き込む方法Python でファイルにテキストを書き込む方法を学びます。安全なコンテキスト マネージャーを使用して、書き込み (「w」) モードと追加 (「a」) モードの違いをマスターします。
Python で辞書を作成する方法Python で辞書を作成する方法を学びます。リテラル構文、辞書コンストラクター、辞書内包表記、およびキーと値の初期化子を理解します。
推奨される Python リソース
関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。
Python ファイル I/O
Python でファイルを読み書きする方法を学びます。 open()、read()、write()、およびコンテキスト マネージャーをマスターして、リソース リークを発生させずにファイル操作を安全に処理します。
Python ファイル操作のチートシート
Python でファイルを読み書きするためのクイック リファレンス。オープン モード、コンテキスト マネージャー、行ごとの読み取りをマスターします。
Python と JavaScript: どちらのプログラミング言語が最適ですか?
Python と JavaScript の包括的な比較。構文の違い、パフォーマンス、使用例 (バックエンドとフロントエンド)、およびコーディング例を調べます。