[Python]json.dumpの使い方改行、インデントを利用した整形

json.dumpとは何か?

JSON(JavaScript Object Notation)は、データを記述するための軽量なフォーマットです。Pythonでは、JSONを扱うための標準ライブラリとして、jsonモジュールが用意されています。

json.dumpメソッドは、PythonオブジェクトをJSON形式の文字列に変換し、ファイルに書き込むことができます。

json.dumpの基本的な使い方

json.dumpメソッドの基本的な使い方は、以下の通りです。

import json
data = {"name": "John", "age": 30, "city": "New York"}
# ファイルに書き込む
with open("data.json", "w") as f:
    json.dump(data, f)

上記のコードでは、dataというPythonオブジェクトをJSON形式に変換し、data.jsonというファイルに書き込んでいます。

json.dumpでの改行の方法

json.dumpメソッドでは、デフォルトでは改行がされません。改行をするには、引数にindentを指定することで、インデントを設定することができます。

import json
data = {"name": "John", "age": 30, "city": "New York"}
# インデントを設定してファイルに書き込む
with open("data.json", "w") as f:
    json.dump(data, f, indent=4)

上記のコードでは、インデントを4に設定し、改行をしてdata.jsonに書き込んでいます。

json.dumpでのインデントの活用方法

json.dumpメソッドでは、インデントを活用して、より見やすいJSONファイルを作成することができます。例えば、以下のように、PythonのリストをJSON形式に変換することができます。

import json
data = {"name": "John", "age": 30, "city": "New York", "hobbies": ["reading", "traveling", "hiking"]}
# インデントを設定してファイルに書き込む
with open("data.json", "w") as f:
    json.dump(data, f, indent=4)

上記のコードでは、hobbiesというキーに対して、リストを値として設定しています。json.dumpメソッドによって、以下のようにJSONファイルが作成されます。

{
    "name": "John",
    "age": 30,
    "city": "New York",
    "hobbies": [
        "reading",
        "traveling",
        "hiking"
    ]
}

json.dumpを用いた整形の具体例

json.dumpメソッドを使って、APIから取得したJSONデータを整形する例を紹介します。

import json
import requests
# APIからJSONデータを取得する
response = requests.get("https://example.com/data.json")
data = response.json()
# インデントを設定してファイルに書き込む
with open("data.json", "w") as f:
    json.dump(data, f, indent=4)

上記のコードでは、requestsモジュールを使ってAPIからJSONデータを取得し、json.dumpメソッドを使って整形されたJSONデータをファイルに書き込んでいます。

よくあるエラーとその対処法

json.dumpメソッドを使う際によくあるエラーと対処法を紹介します。

TypeError: Object of type ‘xxx’ is not JSON serializable

PythonオブジェクトをJSON形式に変換できない場合に発生します。原因としては、JSON形式に変換できないデータ型を使用している場合や、JSON形式に変換できないオブジェクトを使用している場合が考えられます。

対処法としては、JSON形式に変換できるようにデータを変換するか、JSONEncoderを継承してJSON形式に変換できるようにすることが挙げられます。

UnicodeEncodeError: ‘charmap’ codec can’t encode character

日本語などのマルチバイト文字を含む場合に発生します。Windows環境で日本語を含むファイルを扱う場合によく発生します。

対処法としては、ファイルをUTF-8などの文字コードで保存するか、sys.stdoutをUTF-8に設定することが挙げられます。

まとめ

json.dumpメソッドを使うことで、PythonオブジェクトをJSON形式に変換し、ファイルに書き込むことができます。改行やインデントを設定することで、より見やすいJSONファイルを作成することができます。また、エラーに遭遇した場合には、適切な対処法を行うことで問題を解決することができます。