json

【Python】JSONの読み込み/書き込み方法 ~dump, load, dumps, loads~

【Python】JSONの読み込み/書き込み方法 _dump, load, dumps, loads_
naoki-hn

Python で json モジュールを用いて JSON の読み込み/書き込みを行う方法について解説します。

Python における JSON データの利用

Python で JSON 形式のデータを読み込み/書き込みをする場合には、json モジュールを使用します。JSON とは「JavaScript Object Notation」の略で、JavaScript のオブジェクトの書き方を元にしたデータ定義方法になっています。

JavaScript で使われることを想定して定義されたものですが、Python を含めて、幅広い言語で使用ができ、Web のREST API におけるデータのやり取りのためのデータ構造や設定ファイルの管理方法としても使用されます。

この記事では、json モジュールを使って JSON データを扱う方法を紹介します。

設定ファイルの管理という観点では以下も参考にしてください。

JSON ファイルの読み込み/書き込み
dumpload

json モジュールで JSON 形式ファイルの読み込み/書き込みを行う場合は、dump 関数及び load 関数を使用します。

import json

# データを用意
data = {
    "data": [
        {"id": 1, "name": "Taro"},
        {"id": 2, "name": "Haruka"},
        {"id": 3, "name": "Sakura"},
    ]
}

# JSONファイルへの書き込み
with open("test.json", "w", encoding='utf-8') as f:
    json.dump(data, f)

# JSONファイルの読み込み
with open("test.json", "r", encoding='utf-8') as f:
    data_r = json.load(f)
    print(data_r)
    print(type(data_r))
【test.jsonのファイルの中身】
{"data": [{"id": 1, "name": "Taro"}, {"id": 2, "name": "Haruka"}, {"id": 3, "name": "Sakura"}]}
【実行結果】
{'data': [{'id': 1, 'name': 'Taro'}, {'id': 2, 'name': 'Haruka'}, {'id': 3, 'name': 'Sakura'}]}
<class 'dict'>

以降で上記例におけるポイントを説明していきます。

JSON ファイルの書き込み dump

JSON ファイルへの書き込みを行っている部分は以下の部分です。

# JSONファイルへの書き込み
with open("test.json", "w", encoding='utf-8') as f:
    json.dump(data, f)

JSON ファイルへ書き込みを行う場合には、open 関数で .json 拡張子のファイルを開きます。入力する辞書データ(data)とファイルオブジェクト(f)を dump 関数の引数に渡すことで JSON 形式でファイルを出力することができます。

【test.jsonのファイルの中身】
{"data": [{"id": 1, "name": "Taro"}, {"id": 2, "name": "Haruka"}, {"id": 3, "name": "Sakura"}]}

test.json のファイルの中身を確認すると用意した辞書データと同じになっていることが分かります。

ただし、json ではダブルクォーテーション(")で文字列を囲むことが仕様となっています。そのため、Python 側でシングルクォーテーション(')の文字列で辞書を作成していたとしても(")で出力されます。

JSON ファイルの読み込み load

JSON の読み込みを行っているのは以下の部分です。

# JSONファイルの読み込み
with open("test.json", "r", encoding='utf-8') as f:
    data_r = json.load(f)
    print(data_r)
    print(type(data_r))

データを読み込む際には、load 関数を使用します。上記の例では data_r にデータを読み込んで出力しています。

【実行結果】
{'data': [{'id': 1, 'name': 'Taro'}, {'id': 2, 'name': 'Haruka'}, {'id': 3, 'name': 'Sakura'}]}
<class 'dict'>

実行結果を見ると辞書形式で読み込みがされていることが分かります。

Python 辞書と JSON 形式文字列間の変換
dumpsloads

上記では、JSON 形式のファイルの読み込み/書き込みについて紹介しました。ここでは、プログラム内で Python 辞書と JSON 形式文字列を変換する例を見ていきます。

Python 辞書と JSON 形式文字列を変換する際には、dumps 関数と loads 関数を使用します。ファイルの読み込み/書き込み時との違いは「s」があるかないかの違いですので注意しましょう。

import json

# データを用意
data = {
    "data": [
        {"id": 1, "name": "Taro"},
        {"id": 2, "name": "Haruka"},
        {"id": 3, "name": "Sakura"},
    ]
}

# JSON形式文字列への変換
json_data = json.dumps(data)
print(json_data)
print(type(json_data), "\n")

# JSON形式文字列を辞書へ変換
data_dic = json.loads(json_data)
print(data_dic)
print(type(data_dic))
【実行結果】
{"data": [{"id": 1, "name": "Taro"}, {"id": 2, "name": "Haruka"}, {"id": 3, "name": "Sakura"}]}
<class 'str'> 

{'data': [{'id': 1, 'name': 'Taro'}, {'id': 2, 'name': 'Haruka'}, {'id': 3, 'name': 'Sakura'}]}
<class 'dict'>

以降で上記例におけるポイントを説明していきます。

Python 辞書 → JSON 形式文字列への変換 dumps

Python 辞書を JSON 形式文字列に変換しているのは以下の部分です。

# JSON形式文字列への変換
json_data = json.dumps(data)
print(json_data)
print(type(json_data))

JSON 形式文字列へ変換する際には、辞書を dumps 関数の引数に渡します。type で型を確認していますが、str となっていることが分かります。

【実行結果抜粋】
{"data": [{"id": 1, "name": "Taro"}, {"id": 2, "name": "Haruka"}, {"id": 3, "name": "Sakura"}]}
<class 'str'> 

JSON 形式文字列 → Python辞書への変換 loads

JSON 形式文字列を Python 辞書に変換しているのは以下の部分です。

# JSON形式文字列を辞書へ変換
data_dic = json.loads(json_data)
print(data_dic)
print(type(data_dic))

JSON 形式文字列を Python 辞書に変換するには、loads 関数に JSON 形式の文字列を渡します。type で型を確認していますが、dict となっていることが分かります。

【実行結果抜粋】
{'data': [{'id': 1, 'name': 'Taro'}, {'id': 2, 'name': 'Haruka'}, {'id': 3, 'name': 'Sakura'}]}
<class 'dict'>

まとめ

Python で json モジュールを用いて JSON の読み込み/書き込みを行う方法について解説しました。

JSON とは「JavaScript Object Notation」の略で、JavaScript のオブジェクトの書き方を元にしたデータ定義方法で、Web のREST API におけるデータのやり取りのためのデータ構造や設定ファイルの管理方法としても使用されます。

この記事では、dumploaddumpsloads といった基本的な関数の使い方を例を使って紹介しています。

JSON は、プログラム開発でよく使用するデータ形式であるため、ぜひ json モジュールの使い方を覚えて、うまく使いこなしてもらえたらと思います。

json の公式ドキュメントはこちらを参照してください。

ソースコード

上記で紹介しているソースコードについては GitHub にて公開しています。参考にしていただければと思います。

あわせて読みたい
【Python Tech】プログラミングガイド
【Python Tech】プログラミングガイド

ABOUT ME
ホッシー
ホッシー
システムエンジニア
はじめまして。当サイトをご覧いただきありがとうございます。 私は製造業のメーカーで、DX推進や業務システムの設計・開発・導入を担当しているシステムエンジニアです。これまでに転職も経験しており、以前は大手電機メーカーでシステム開発に携わっていました。

プログラミング言語はこれまでC、C++、JAVA等を扱ってきましたが、最近では特に機械学習等の分析でも注目されているPythonについてとても興味をもって取り組んでいます。これまでの経験をもとに、Pythonに興味を持つ方のお役に立てるような情報を発信していきたいと思います。どうぞよろしくお願いいたします。

※キャラクターデザイン:ゼイルン様
記事URLをコピーしました