JSON-python PR

【jsonモジュール】Pythonで「JSONファイル」を読み込む方法【load】

記事内に商品プロモーションを含む場合があります

はじめに

Python組み込みのjsonモジュールの「load関数」を使って、JSONファイルを読み込む方法を解説します。load関数を使うと、JSONファイルを辞書に変換することができます。

Python組み込みなのでインストール不要。使い方も簡単なので、サクッとJSONを扱いたい方はぜひご覧ください。

環境

この記事は以下の環境で作成しています。

環境 バージョンなど 備考
Python 3.9.6
OS Wiindows10 Win10でもOKです。

loadとloadsの違い

JSONの読み込みには「load」「loads」の2つの関数があります。読み込み対象が「ファイル」か「文字列」かで2つの関数を使い分けます。

今回はJSON「ファイル」からの読み取りなので「load関数」を使用します。

関数名 読み込み対象
load JSON「ファイル」
loads JSON「文字列」

「読み取り」となると「Parse」を思い浮かべますが、jsonモジュールにParse関数はありません。

ファイルから読み取りに使う「load」関数の使い方が知りたい方は、こちらのページをごらんください。

コードの概要

コードの概要は以下の通りです。

  • Openで「JSONファイル」を開く
  • load関数で「辞書型」として取得する
  • 辞書型データの書き換え・再表示

読み込むJSONファイル

以下のJSONファイルを読み込みます。

{
    "Email": "james@example.com",
    "Active": true,
    "CreatedDate": "2013-01-20T00:00:00Z",
    "Roles": [
      "User",
      "Admin"
    ]
}

後述するコードをそのまま実行する場合は、上記のJSONファイル(test.json)をコードと同じフォルダに保存してください。

実行結果

後述の「JSONファイルを読み込むコード」の実行結果です。JSONファイルを辞書型のデータに取り込んで表示しています。

最終行のメールアドレスは、JSONファイルの「Email」の部分を書き換えて、再表示しています。

james@example.com
True
2013-01-20T00:00:00Z
User
Admin
taro@example.com

全体コード

「JSONを読み込むコード」の全体です。ポイント部分は後述の「コードのポイント」で詳しく解説します。

import json

# JSONファイルを読み込みます
with open("test.json", "r") as file:
    dict = json.load(file)

# 読み込んだ内容にアクセス(表示)します
print( dict["Email"])
print( dict["Active"])
print( dict["CreatedDate"])

print( dict["Roles"][0])
print( dict["Roles"])

# 要素を指定して代入で、値の書き換えができます
dict["Email"] = "taro@example.com"
print( dict["Email"] )

コードのポイント

JSONファイルを開く

open関数でJSONファイルを読み込みます。

「with」の書き方はjsonモジュールに必須ではありません。スコープ(インデントされたブロック)から抜けた際に、自動的にファイルのCloseを行ってくれる便利なコードです。

「”file”という変数に、”r”(読み込みモード)で、”test.json”を開いてね」 という記述です。

with open("test.json", "r") as file:

load関数でJSONから辞書に

load関数にファイルオブジェクト(変数)を渡すと、JSONファイルを辞書型のオブジェクトとして取得できます(デシリアライズ操作)。

dict = json.load(file)

load関数は「ファイル形式」のJSONを使いますが、「文字列形式」のJSONを渡したい場合は、loads関数を使います。

dict = json.loads(string_json)

格納データにアクセスする

辞書の要素名には「”Email”」など、JSONの変数名がそのまま使われます。そのため、辞書の要素名に、JSONの変数名を指定してアクセスします。

# 読み込んだ内容にアクセス(表示)します
print( dict["Email"])
print( dict["Active"])
print( dict["CreatedDate"])

print( dict["Roles"][0])
print( dict["Roles"])

# 要素を指定して代入で、値の書き換えができます
dict["Email"] = "taro@example.com"
print( dict["Email"] )

loadのエラー対処方法

JSONファイルの内容によっては、load関数で以下のエラーが発生することがあります。その際はJSONファイルに「シングルクォート」や「カンマ忘れ」がないか確認してみてください。

シングルクォートによるエラー

JSONファイル内でシングルクォート(”)を使うと、JSONDecodeErrorが発生します。シングルクォートを使用している場合は、ダブルクォート(“”)に書き換えてください。

シングルクォートで囲んだ例
{
  'Email': 'james@example.com',
  'Active': true,
  'CreatedDate': '2013-01-20T00:00:00Z',
  'Roles': [
    'User',
    'Admin'
  ]
}
エラーの表示例
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 5 (char 6)

カンマ忘れによるエラー

JSONファイル内でカンマを忘れた場合も JSONDecodeError が発生しますエラーの行番号などを参考に、カンマ忘れがないか確認してください。

カンマを忘れた場合の例

カンマを忘れた場合の例です。先頭のEmailの行の最後にカンマがありません。

{
    "Email": "james@example.com"
    "Active": true,
    "CreatedDate": "2013-01-20T00:00:00Z",
    "Roles": [
      "User",
      "Admin"
    ]
}

エラーの表示例
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 3 column 5 (char 39)

まとめ

Python組み込みの「json」モジュールを使って、JSONファイルを読み込む方法を解説しました。参考になればうれしいです。

お知らせ

3月号の『日経ソフトウェア』はPythonの特集。穴埋め式クイズで学ぶPython入門や、PythonでExcelを動かす方法などが特集されています。

編集:日経ソフトウエア
¥1,925 (2024/02/20 06:32時点 | Amazon調べ)

jsonモジュールの他の使い方

このブログでは、jsonモジュールの以下の使い方についても解説しています。興味のある方は以下の記事も是非ご覧ください。

JSONファイルの読み込み

質問・要望 大歓迎です

「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。

使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です