ホーム テクノロジー 開発 非公開: Python で JSON を解析する方法

Python で JSON を解析する方法

Python で JSON を解析する方法

JSON は データ交換用の一般的な形式です。 Python には 、JSON データを解析して操作するための 組み込み JSON モジュールが付属しています。 このチュートリアルでは、Python での JSON の操作についてすべて説明します。

このチュートリアルを終えると、次のことを学習できるようになります。

  • JSONの基本、
  • Python で JSON 文字列を解析して作成する方法、および
  • Python で JSON ファイルを読み書きする方法。

始めましょう!⏳

Python で JSON を解析する方法
Python で JSON を解析する方法

JSONとは何ですか?

JSON は Java Script Object N otation 略で、 データ 交換用 テキストベースの 形式です。 JSON は当初 JavaScript オブジェクトからインスピレーションを得ています が、ほとんどすべてのプログラミング言語が JSON の操作をサポートしています。

API を使用したり、構成ファイルを読んだりしたことがある場合は、JSON に遭遇したことがあるでしょう。

📑 API をクエリするときは、JSON でデータを送受信します。また、JSON はソフトウェア アプリケーションのクライアント/サーバー通信でも広く使用されています。さらに、JSON を汎用データ ストレージにも使用できます。

JSON の形式は、Python 辞書の形式と非常によく似ています。ディクショナリは、データをキーと値のペアで保存する Python の強力な組み込みデータ構造です。

先に進む前に、注目すべき点がいくつかあります。

  • Python では、JSON オブジェクトは辞書として保存されます。
  • JSON の配列は Python リストとして保存されます。
  • JSON では、ブール値は true および false として表されます。 Python では、これらはブール値 True および False に変換されます。

JSON から Python に変換されるデータ型の詳細については、 ここの ドキュメントを参照してください。

json モジュールは Python 標準ライブラリの一部であるため、インストールする必要はありません。次のように、現在のディレクトリにインポートできます。

 import json
Python で JSON を解析する方法
Python で JSON を解析する方法

Python で JSON 文字列をロードする方法

Python で JSON 文字列をロードするための一般的な構文は次のとおりです。

 <dict_obj> = json.loads(<json_str>)

ここ、

  • <dict_obj> は、JSON 文字列をロードする Python 辞書です。
  • <json_str> は、任意の有効な JSON 文字列です。

これにより、 <json_str> Python 辞書 <dict_obj> にロードされます。

例をコーディングしてみましょう。ここで、 json_str JSON 文字列です。

 json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''

以下のコード スニペットは loads() メソッドを使用して JSON 文字列 json_str Python 辞書にロードする方法を示しています。組み込みの type() 関数を使用して、 py_dict Python 辞書であることを確認できます。

 py_dict = json.loads(json_str)

type(py_dict)

# Output: dict

print(py_dict)

# Output
{'books': [{'title': 'The Wind in the Willows', 
'author': 'Kenneth Grahame', 'year': '1908'}, 
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}

上記のコードに示されているように、JSON 文字列のすべてのフィールドは py_dict のキーと値のペアです。

Python で JSON を解析する方法
Python で JSON を解析する方法

Python で JSON 文字列を作成する方法

Python 辞書があると仮定しましょう。では、そこから JSON 文字列を作成するにはどうすればよいでしょうか?

これは、次の構文で dumps() メソッドを使用して行うことができます。

 <json_str> = json.dumps(<dict_obj>)

ここ、

  • <dict_obj> 、JSON 文字列の作成元となる Python 辞書です。
  • <json_str> は、結果として得られる JSON 文字列です。

したがって、 dumps() メソッドは <dict_obj> JSON 文字列 <json_str> にダンプします。

既存の Python 辞書 py_dict に追加します。新しいキー "movies" を追加しましょう。次のコード スニペットに示すようにこれを行うことができます。

 py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]

ここで、 dumps() メソッドを使用して、変更した辞書を新しい JSON 文字列 json_str2 にダンプしましょう。

 json_str2 = json.dumps(py_dict)

print(json_str2)

# Output
{"books": [{"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"}, 
{"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}], 
"movies": [{"title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true}]}

上の例でわかるように、出力された JSON 文字列は、適切な形式に設定されていないと読み通すのが困難です。 オプションの パラメーター indent 使用してインデントを追加できます。

以下に示すように、 indent 2 のような整数に設定することでこれを行うことができます。

 json_str2 = json.dumps(py_dict, indent = 2)
print(json_str2)

# Output
{
  "books": [
    {
      "title": "The Wind in the Willows",
      "author": "Kenneth Grahame",
      "year": "1908"
    },
    {
      "title": "To the Lighthouse",
      "author": "Virginia Woolf",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "title": "The Imitation Game",
      "year": "2014",
      "lang": "en",
      "watched": true
    }
  ]
}

出力がインデントを使用してどのようにフォーマットされているかを観察すると、簡単に理解できます。

: 💡 キーをアルファベット順に並べ替えたい場合は、 sort_keys パラメーターを True に設定できます。

以下のコード スニペットでわかるように、キーはアルファベット順に並べ替えられています。

 json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True)
print(json_str2)

# Output
{
  "books": [
    {
      "author": "Kenneth Grahame",
      "title": "The Wind in the Willows",
      "year": "1908"
    },
    {
      "author": "Virginia Woolf",
      "title": "To the Lighthouse",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "lang": "en",
      "title": "The Imitation Game",
      "watched": true,
      "year": "2014"
    }
  ]

そして、キーはアルファベット順に表示されます: "author" "title" および "year"

ここまでは、Python で JSON 文字列を操作する方法を学習しました。次のセクションでは、JSON ファイルの操作方法を学習します。

Python で JSON を解析する方法
Python で JSON を解析する方法

Python で JSON ファイルを読み取る方法

Python で JSON ファイルを読み取るには、次の構文を使用します。

 json.load(<json-file>) 

# where <json-file> is any valid JSON file.

load() メソッドではなく、 loads() メソッドを使用する方法に注目してください。 loads() JSON 文字列をロードし、 load() JSON ファイル をロードします。

Python でファイルを操作する場合は、コンテキスト マネージャーの使用を検討する必要があります。コンテキスト マネージャーを使用せずに、次のようにファイルの読み取りを試みることもできます。

 my_file = open('students.json','r')

contents = my_file.read()

print(contents)

file.close()

ファイルを閉じないと、リソースが無駄に消費される可能性があります。

ただし、 コンテキスト マネージャー を使用する場合、ファイル操作が完了すると、ファイルは自動的に閉じられます。

また、以下に示すように、コンテキスト マネージャーを使用してファイルを読み取ることができます。

 with open('students.json','r') as file:   
   data = json.load(file) 
   print(data) 

# Output 

{'students': [{'roll_num': 'cs27', 'name': 'Anna', 'course': 'CS'}, 
{'roll_num': 'ep30', 'name': 'Kate', 'course': 'PHY'}]}

ファイルから読み取るときに、モードを 読み取り として指定します (上記のコードでは 'r' で示されています)。

: 現在のディレクトリ内を簡単に移動できるように、以下の図に示すように、JSON ファイルが main.py と同じフォルダーにあることを確認してください。 JSON ファイルが別のフォルダーにある場合は、必ずファイルへのパスを指定してください。

PythonでJSONファイルを読み込みます。
Pythonでのjsonファイルの読み取り
Pythonでのjsonファイルの読み取り

次のセクションでは、JSON ファイルに書き込む方法を学習します。✍

Python で JSON ファイルに書き込む方法

既存の JSON ファイルに書き込むか、新しい JSON ファイルを作成するには、次のように dump() メソッドを使用します。

 json.dump(<dict_obj>,<json_file>)

# where <dict_obj> is a Python dictionary 

# and <json_file> is the JSON file 

したがって、上記の構文は、辞書 <dict_obj> を JSON ファイル <json_file> にダンプします。

前のセクションでは、辞書 py_dict ありました。次に、それを新しい JSON ファイルにダンプしましょう。そして、それに new_file.json という名前を付けましょう。

次のコードセルは、 dump() 関数の使用方法を示しています。

 with open('new_file.json','w') as file:
  json.dump(py_dict,file)

: ファイルが存在する場合、 書き込み モード ( w ) でファイルを開くと、その内容が上書きされます。ファイルが存在しない場合は、ファイルが作成されます。

上記のコード セルを実行すると、現在の作業ディレクトリに新しい JSON ファイルが作成されたことがわかります。次に、JSON ファイルの内容を調べてみましょう。

PythonでJSONファイルを作成する

ファイルに書き込む場合の主な目的はデータの保存です。また、書式設定を保持したい場合は、 indent sort_keys パラメーターを使用することもできます。

結論

⏲ 簡単にまとめます。

このチュートリアルでは、次のことを学習しました。

  • JSON の使用の基本、
  • loads() load() メソッドを使用して、それぞれ JSON 文字列と JSON ファイルを読み取る方法、
  • dumps() dump() メソッドを使用して、Python 辞書をそれぞれ JSON 文字列と JSON ファイルにダンプする方法。

このチュートリアルがお役に立てば幸いです。楽しく学習しましょう!

JSON ツールを使用して解析、フォーマット、検証することもできます。

「 Python で JSON を解析する方法」についてわかりやすく解説!絶対に観るべきベスト2動画

json.dumps() and json.loads() in Python
Python チュートリアル: json モジュールを使用した JSON データの操作
Share via
Copy link