[Python]JSONの整形テクニック(ワンライナー CSV 日本語)

こんにちは、Python初心者の皆さん!今回は、PythonでJSONデータを整形する方法についてお伝えします。JSONデータを扱う上で整形は非常に重要な作業です。そのため、本記事では、JSONデータの基本的な整形方法から、ワンライナーやCSV形式での整形方法、日本語が含まれるJSONデータの整形方法まで、幅広く解説していきます。

JSONデータの整形方法:基本的な使い方

まずは、JSONデータの基本的な整形方法を紹介します。Pythonでは、標準ライブラリのjsonモジュールを使用することで、JSONデータの整形が可能です。以下のようなJSONデータがあるとします。

{
  "name": "John",
  "age": 30,
  "city": "New York"
}

このJSONデータを整形するには、以下のようにjson.dumps()関数を使用します。

import json
data = {
  "name": "John",
  "age": 30,
  "city": "New York"
}
formatted_data = json.dumps(data, indent=4)
print(formatted_data)

実行結果:

{
    "name": "John",
    "age": 30,
    "city": "New York"
}

json.dumps()関数にJSONデータとindent=4のオプションを渡すことで、JSONデータを整形しています。

ワンライナーでJSONデータを整形するテクニック

次に、ワンライナーでJSONデータを整形するテクニックを紹介します。以下のようなJSONデータがあるとします。

{
  "name": "John",
  "age": 30,
  "city": "New York"
}

このJSONデータをワンライナーで整形するには、以下のように書きます。

import json
data = {"name": "John", "age": 30, "city": "New York"}
print(json.dumps(data, indent=4))

実行結果:

{
    "name": "John",
    "age": 30,
    "city": "New York"
}

ワンライナーでJSONデータを整形することで、コードを簡潔に書くことができます。

CSV形式で出力するためのJSONデータ整形方法

次に、CSV形式で出力するためのJSONデータ整形方法を紹介します。以下のようなJSONデータがあるとします。

[
    {
        "name": "John",
        "age": 30,
        "city": "New York"
    },
    {
        "name": "Alice",
        "age": 25,
        "city": "Los Angeles"
    }
]

このJSONデータをCSV形式で出力するには、以下のようにpandasモジュールを使用します。

import pandas as pd
data = [
    {
        "name": "John",
        "age": 30,
        "city": "New York"
    },
    {
        "name": "Alice",
        "age": 25,
        "city": "Los Angeles"
    }
]
df = pd.json_normalize(data)
print(df.to_csv(index=False))

実行結果:

name,age,city
John,30,New York
Alice,25,Los Angeles

pandasモジュールのjson_normalize()関数を使用することで、JSONデータをフラットな形式に変換しています。その後、to_csv()関数を使用することで、CSV形式で出力しています。

日本語が含まれるJSONデータの整形のポイント

最後に、日本語が含まれるJSONデータの整形のポイントを紹介します。以下のようなJSONデータがあるとします。

{
    "name": "山田 太郎",
    "age": 30,
    "city": "東京"
}

このJSONデータを整形するには、以下のようにjson.dumps()関数を使用します。

import json
data = {
    "name": "山田 太郎",
    "age": 30,
    "city": "東京"
}
formatted_data = json.dumps(data, ensure_ascii=False, indent=4)
print(formatted_data)

実行結果:

{
    "name": "山田 太郎",
    "age": 30,
    "city": "東京"
}

日本語が含まれるJSONデータを整形するには、json.dumps()関数にensure_ascii=Falseのオプションを渡す必要があります。これにより、日本語がエスケープされずにそのまま表示されます。

JSONデータ整形の実践例:具体的なコードとその説明

最後に、JSONデータ整形の実践例を紹介します。以下のようなJSONデータがあるとします。

[
    {
        "name": "山田 太郎",
        "age": 30,
        "city": "東京"
    },
    {
        "name": "田中 次郎",
        "age": 25,
        "city": "大阪"
    }
]

このJSONデータを整形するには、以下のようにコードを書きます。

import json
import pandas as pd
def format_json(data):
    formatted_data = json.dumps(data, ensure_ascii=False, indent=4)
    return formatted_data
def json_to_csv(data):
    df = pd.json_normalize(data)
    return df.to_csv(index=False)
data = [
    {
        "name": "山田 太郎",
        "age": 30,
        "city": "東京"
    },
    {
        "name": "田中 次郎",
        "age": 25,
        "city": "大阪"
    }
]
formatted_data = format_json(data)
csv_data = json_to_csv(data)
print(formatted_data)
print(csv_data)

実行結果:

[
    {
        "name": "山田 太郎",
        "age": 30,
        "city": "東京"
    },
    {
        "name": "田中 次郎",
        "age": 25,
        "city": "大阪"
    }
]
name,age,city
山田 太郎,30,東京
田中 次郎,25,大阪

このコードでは、JSONデータの整形方法とCSV形式での出力方法を関数化しています。そのため、必要に応じて他のプログラムで使用することができます。

まとめと今後の学習について

いかがでしたか?今回は、PythonでJSONデータを整形する方法について解説しました。JSONデータの整形は非常に重要な作業であり、Pythonではjsonモジュールやpandasモジュールを使用することで、簡単に整形することができます。また、日本語が含まれるJSONデータを整形する場合には、ensure_ascii=Falseのオプションを渡す必要があります。

今後は、PythonでのJSONデータの処理や、pandasモジュールのより高度な使い方などについて学習していくことをおすすめします。