コース一覧
    Pythonエラー・データ形式
    JSONを読み込む

    Pythonエラー・データ形式

    例外処理とデータ形式を深め、異なる入力を検証し変換する処理を設計できるようにします。

    1
    エラー処理の設計
    01. 例外の階層15分
    02. raiseで例外を投げる15分
    03. カスタム例外15分
    04. finallyとelse15分
    05. assertで前提を守る15分
    06. つくる 入力検証の例外設計20分
    07. 第5章クイズ10分
    2
    ファイルとデータ形式
    01. csvモジュール15分
    02. JSONで保存15分
    03. JSONを読み込む15分
    04. pathlibでパス操作15分
    05. 文字コード15分
    06. つくる JSON保存へ移行20分
    07. 第6章クイズ10分

    JSONを読み込む

    このレッスンでできるようになること。json.load で、保存しておいた家計簿の構造を Python のデータとして読み戻せるようになります。

    前回は json.dump で辞書をファイルに書きました。今回はその逆で、プログラムを起動したときにファイルから前回までの家計簿を復元します。ここまで来ると、実行するたびにデータが消えるプログラムから卒業できます。

    読み込みは json.load(f) の1行です。ファイルオブジェクトを渡すと、中身を読んで Python のデータに直して返します。書くときの dump と dumps と同じで、文字列から直したいときは json.loads を使います。

    Python

    import json
    
    with open("kakeibo.json", encoding="utf-8") as f:
        kakeibo = json.load(f)
    
    print(kakeibo["2026-08"][0]["品名"])

    読み戻したデータは、書いたときと同じ形の辞書やリストになっています。ただし完全に同じではない点が2つあります。1つ目は、タプルで書いたものがリストになって返ってくることです。JSON にタプルという型が無いためです。2つ目は、辞書のキーがすべて文字列になることです。{1: "ノート"} を保存すると、読み戻したときは {"1": "ノート"} になります。月を "2026-08" のような文字列で持っておけば、この違いに悩まされません。

    もう1つ、実務でよくある落とし穴があります。ファイルの中身が壊れていたり空だったりすると、json.load は json.JSONDecodeError を投げます。第5章で学んだ try と except でこれを捕まえて、空の家計簿から始め直すという書き方が定番です。

    月ごとの集計をするときは、sorted(kakeibo) のようにキーを並べ替えてから回します。辞書の順序に頼って出力すると、保存の仕方が変わったときに結果の順番が変わってしまうためです。

    要件

    1. json.dump で kakeibo を kakeibo_load.json に保存する (ensure_ascii=False を付ける)
    2. 同じファイルを json.load で読み戻して restored に入れる
    3. type(restored).name を表示する
    4. sorted で月を昇順にしてから1行ずつ表示する
    5. 各行は 月、件数、"件"、合計金額、"円" を空白区切りで並べる

    ヒント

    合計は sum(e["金額"] for e in restored[month]) で求まります

    件数は len(restored[month]) です

    print は複数の値をカンマで渡すと空白区切りで並びます

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/07

    関連レッスン

    • pathlibでパス操作

      Path でパスを安全に組み立て、保存先を整理します。

    • 文字コード

      encoding を明示して、日本語のデータを安全に保存します。

    • つくる JSON保存へ移行

      CSV から JSON へデータを移す処理を書きます。

    • 第6章クイズ

      ファイルとデータ形式の理解を確認します。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • applicationJSON 本文を送るときの Content-Type
    • オブジェクトキーと値のペアで構造を作るデータ
    • リスト順序付きで複数の値を扱うデータ構造
    • タプル順序付きで変更不可のシーケンス
    main.py
    エディタを読み込んでいます

    メモ

    JSONを読み込む

    ⌘S で保存