Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでJSONを扱う方法を徹底解説!jsonモジュールの基本と使い方

JSONは、構造化されたデータを保存するために広く使われている人気のデータ形式です。

Pythonでアプリケーションを開発する際、JSONを活用したくなる場面は多くあります。例えば、JSONファイルからデータを読み込んだり、JSON形式で保存されたデータをファイルに書き出したりするケースが挙げられます。

この記事では、JSONデータ形式の基本、Pythonのjsonモジュールの使い方、そしてPythonでJSONを操作する方法を詳しく解説します。このチュートリアルを読み終える頃には、PythonプログラムでJSONを自在に扱えるようになっているでしょう!

JSONとは?

JSONは「JavaScript Object Notation(JavaScriptオブジェクト記法)」の略で、構造化されたデータを保存するためのデータ形式です。

JSONは、Webアプリケーションにおいてサーバーとの間でデータをやり取りする際によく使われます。例えば、Fitbit APIやGoogle Maps APIなど、多くのAPIがJSON形式でデータを返すのを見たことがあるかもしれません。

これは、JSONデータが標準化されており、構造が整っていて、読みやすいからです。

以下は、PythonにおけるJSONレコードの例です:

{
	"name": "James Smith",
	"id": 202,
	"probation": False
}

このレコードには、コロン(:)の左側にある3つのキーと、コロンの右側に保存された3つの値が含まれています。各キーはそれぞれ値と紐づいています。

JSONデータ形式は辞書(dictionary)と混同しないように注意しましょう。見た目は辞書とよく似ていますが、JSONは「データ形式」であるのに対し、辞書は「データ構造」です。

つまり、JSONデータを辞書として扱いたい場合は辞書への変換が必要になり、逆に辞書をJSONとして保存したい場合はJSONへの変換が必要になります。

Pythonでjsonモジュールをインポートする

PythonでJSONを操作する前に、まずPythonのjsonモジュールをインポートする必要があります。このモジュールには、JSONデータを扱うためのさまざまな関数が含まれています。

jsonモジュールをインポートするには、次のステートメントを使用します:

import json

これでjsonモジュールがコードに読み込まれたので、その関数を使い始めることができます。

PythonでJSONをパースする

JSONデータを扱う上で最も重要な操作のひとつが、JSONを辞書にパース(変換)することです。

JSONを辞書に変換するには、json.loads()メソッドを使用します。

json.loads()は1つの引数を受け取ります。それは、辞書に変換したいJSON文字列です。

例えば、エンジニアリングチームでコーダーに割り当てられたプロジェクトの情報を保存したJSON文字列があるとしましょう。このJSON文字列を辞書に変換したい場合、次のようなコードを使用できます:

import json

employee = '{"name": "Linda Richardson", "projects": ["Directory", "Homepage"]}'
employee_dictionary = json.loads(employee)

print(employee_dictionary)
print(employee_dictionary["name"])

このコードを実行すると、次の出力が得られます:

{'name': 'Linda Richardson', 'projects': ['Directory', 'Homepage']}

Linda Richardson

コードを分解して見てみましょう。まず、jsonモジュールをコードにインポートします。次に、従業員レコードをJSON構造で保存するemployeeという文字列を宣言します。

続いて、json.loads()を使用してemployee文字列を辞書に変換します。そして、新しい辞書をコンソールに出力し、さらにnameキーの値もコンソールに出力しています。

ご覧のとおり、辞書はJSON文字列と同じように見えます。しかし、データは辞書として保存されています。「name」キーの値を出力すると「Linda Richardson」がコンソールに表示されることからも、それが確認できます。

辞書をJSON文字列に変換する

辞書を扱っていると、それをJSON文字列に変換したくなる場面があります。

これはよく使われる操作です。JSONの値をファイルに保存する際には、文字列としてフォーマットする必要があるからです。辞書をJSONに変換するには、json.dumps()メソッドを使用します。

例えば、従業員情報を含む辞書をJSON文字列に変換したい場合、次のようなコードを使用できます:

import json

employee = {
	"name": "Linda Richardson",
	"id": 107,
	"probation": False,
	"department": "Sales"
}

employee_json = json.dumps(employee)
print(employee_json)

このコードを実行すると、次の出力が得られます:

'{"name": "Linda Richardson", "id": 107, "probation": false, "department": "Sales"}'

出力結果は元の辞書とよく似て見えますが、辞書は文字列として保存されています。

JSON文字列をフォーマットする

json.dumps()メソッドには、生成される文字列を読みやすくするためのいくつかの引数が用意されています。

indent引数を使うと、最終的なJSON文字列のインデント数を指定できます。例えば、JSON文字列の各行に4つのインデントを付けたい場合は、次のようにjson.dumps()ステートメントを使用します:

employee_json = json.dumps(employee, indent=4)

このステートメントを前の例と組み合わせると、次のような出力が得られます:

{
    "name": "Linda Richardson",
    "id": 107,
    "probation": false,
    "department": "Sales"
}

また、JSON文字列内のデータのセパレーター(区切り文字)を変更することもできます。セパレーターのデフォルト値は「, 」と「: 」で、オブジェクト同士はカンマで、キーと値はコロンで区切られます。

例えば、キーと値を等号(=)で区切り、インデントを4にしたい場合は、次のステートメントを使用します:

employee_json = json.dumps(employee, indent=4, separators=(", ", " = "))

このコードを実行すると、次の出力が得られます:

{
    "name" = "Linda Richardson", 
    "id" = 107, 
    "probation" = false, 
    "department" = "Sales"
}

ご覧のとおり、JSON文字列内のすべてのキーと値が等号で区切られるようになりました。

JSONファイルを読み込む

PythonでJSONファイルを読み込むには、json.load()を使用します。このメソッドは1つの引数を受け取ります。それは、プログラムで読み込みたいファイルオブジェクトです。

例えば、プログラムに読み込みたいemployee.jsonというファイルがあるとしましょう。このファイルの内容は次のとおりです:

{"name": "Linda Richardson", "id": 107, "probation": false}

このファイルを読み込むには、次のようなコードを使用します:

import json

with open('employee.json') as final_file:
	employee = json.load(final_file)

print(employee)

このコードを実行すると、次の出力が得られます:

{"name": "Linda Richardson", "id": 107, "probation": false}

このコードでは、まずjsonライブラリをインポートします。次に、withステートメントを使ってemployee.jsonファイルを読み込みます。そして、json.load()メソッドを使用してファイルの内容を辞書に変換し、その値を出力しています。

JSONをファイルに書き込む

PythonでJSONをファイルに書き込むには、json.dump()メソッドを使用します。

json.dump()メソッドは2つの引数を受け取ります。1つ目はファイルに書き込みたい辞書、2つ目は書き込み先のファイルオブジェクトです。

例えば、従業員のレコードをJSONとしてファイルに保存したいとしましょう。ファイル名はlinda_employee.jsonにします。次のようなコードを使用できます:

import json

employee = {
	"name": "Linda Richardson",
	"id": 107,
	"probation": False,
	"department": "Sales"
}

with open('linda_employee.json', 'w') as final_file:
	json.dump(employee, final_file)

コードを分解して見てみましょう。まず、jsonモジュールをプログラムにインポートします。次に、Linda Richardsonという従業員の情報を辞書構造で保存する変数を宣言します。

続いて、「w」フラグを付けた「with」ステートメントを使用して、書き込み可能なlinda_employee.jsonというファイルを準備します。そして、json.dump()を使用してemployee辞書をJSON文字列に変換し、final_fileオブジェクトに保存します。

このプログラムを実行すると、employee辞書の内容がlinda_employee.jsonファイルに書き込まれます。ファイルの最終的な内容は次のとおりです:

{"name": "Linda Richardson", "id": 107, "probation": false, "department": "Sales"}

まとめ

Pythonのjsonモジュールを使うと、JSONデータの読み込みや操作が可能になります。

jsonモジュールを使用すると、次のことができます:

  • ファイルからJSONを読み込む
  • 辞書をJSONに変換する
  • JSONを辞書に変換する
  • JSON文字列をファイルに書き込む

このチュートリアルでは、jsonモジュールを使ってこれらすべての操作を行う方法を解説しました。これで、あなたもプロフェッショナルのようにPythonでJSONデータを扱えるようになったはずです!

  1. Pythonで身につける統計的思考 ― グラフとチャートによるデータ分析入門

    統計学は、機械学習(ML)やAIを学ぶうえで欠かせない基礎知識です。これらの技術分野ではPythonが事実上の標準言語となっているため、統計分析を取り入れたPythonプログラムの書き方をマスターすることが重要になります。本記事では、さまざまなPythonライブラリを活用してグラフやチャートを作成する方法を解説します。多様なチャートを使いこなせるようになると、データを素早く分析し、結論を視覚的に導き出せるようになります。 データの準備 ここでは、さまざまな種子(シード)に関するデータを含むデータセットを使用します。このデータセットはKaggleから入手でき、URLは後述のサンプルコード内に記載

  2. Pythonで国勢調査データを分析する方法|インドの人口統計データを可視化してみよう

    国勢調査(センサス)とは、特定の対象人口に関する情報を体系的に記録・収集する取り組みです。収集されるデータには、人口統計、経済状況、居住環境など、さまざまなカテゴリの情報が含まれています。これらのデータは、政府が現状を正確に把握し、将来に向けた政策立案を行ううえで重要な基礎資料となります。本記事では、Pythonを活用してインドの国勢調査データを分析する方法を解説します。人口動態や経済指標など複数の観点からデータを掘り下げ、その結果をグラフとして視覚的に表現します。使用するデータセットはKaggleから入手した「India Districts Census 2011」です。データの準備と読み込