【Python】json形式の文字列から読み込む方法

この記事では、Pythonでjson形式の文字列を読み込む方法について解説します。

標準ライブラリのjsonモジュールとサードパーティライブラリのsimplejsonを使用する方法、さらにエラーハンドリングと例外処理についても紹介します。

初心者の方でもわかりやすく、具体的なサンプルコードと実行結果の例を交えて説明します。

目次から探す

標準ライブラリを使用する方法

Pythonでは、json形式の文字列を扱うために標準ライブラリのjsonモジュールを使用することができます。

以下では、jsonモジュールを使ったjson形式の文字列の読み込み方法について解説します。

jsonモジュールのインポート

まず最初に、jsonモジュールをインポートする必要があります。

以下のようにimport文を使ってjsonモジュールをインポートします。

import json

json.loads()関数を使用して文字列を辞書型に変換する方法

jsonモジュールには、json.loads()関数が用意されており、これを使うことでjson形式の文字列をPythonの辞書型に変換することができます。

以下は、json.loads()関数を使用してjson形式の文字列を辞書型に変換する例です。

import json

json_str = '{"name": "John", "age": 30, "city": "Tokyo"}'
data = json.loads(json_str)

print(data)

上記のコードでは、json_strという変数にjson形式の文字列が代入されています。

json.loads()関数を使ってjson_strを辞書型に変換し、dataという変数に代入しています。

最後にdataを出力すると、以下のような結果が得られます。

{'name': 'John', 'age': 30, 'city': 'Tokyo'}

json.load()関数を使用してファイルから読み込む方法

また、jsonモジュールにはjson.load()関数も用意されており、これを使うことでファイルからjsonデータを読み込むことができます。

以下は、json.load()関数を使用してファイルからjsonデータを読み込む例です。

import json

with open('data.json') as f:
    data = json.load(f)

print(data)

上記のコードでは、data.jsonというファイルからjsonデータを読み込んでいます。

json.load()関数を使ってファイルからデータを読み込み、dataという変数に代入しています。

最後にdataを出力すると、ファイルから読み込んだjsonデータが表示されます。

data.jsonファイルは事前に作成しておく必要があります。

以上が、Pythonの標準ライブラリであるjsonモジュールを使用してjson形式の文字列を読み込む方法です。

次に、サードパーティライブラリを使用する方法について解説します。

サードパーティライブラリを使用する方法

Pythonの標準ライブラリであるjsonモジュール以外にも、サードパーティライブラリであるsimplejsonを使用することで、json形式の文字列を扱うことができます。

simplejsonは、jsonモジュールよりも高速であり、さまざまな拡張機能を提供しています。

simplejsonライブラリのインストールとインポート

simplejsonライブラリを使用するためには、まずライブラリをインストールする必要があります。

以下のコマンドを使用して、simplejsonをインストールします。

pip install simplejson

インストールが完了したら、Pythonのスクリプト内でsimplejsonをインポートします。

import simplejson as json

これで、simplejsonライブラリを使用する準備が整いました。

simplejson.loads()関数を使用して文字列を辞書型に変換する方法

simplejsonライブラリのloads()関数を使用することで、json形式の文字列をPythonの辞書型に変換することができます。

以下は、simplejson.loads()関数の使用例です。

import simplejson as json

json_string = '{"name": "John", "age": 30, "city": "Tokyo"}'
data = json.loads(json_string)

print(data)

上記のコードでは、json_stringという変数にjson形式の文字列が格納されています。

json.loads()関数を使用して、この文字列を辞書型のdataに変換しています。

変換後のdataをprint()関数で出力すると、以下のような結果が得られます。

{'name': 'John', 'age': 30, 'city': 'Tokyo'}

simplejson.load()関数を使用してファイルから読み込む方法

simplejsonライブラリのload()関数を使用することで、json形式のファイルを読み込んでPythonの辞書型に変換することができます。

以下は、simplejson.load()関数の使用例です。

import simplejson as json

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

print(data)

上記のコードでは、data.jsonというファイルを読み込んで、その内容を辞書型のdataに変換しています。

ファイルを読み込む際には、open()関数を使用し、’r’モードでファイルを開いています。

変換後のdataをprint()関数で出力すると、ファイルの内容が辞書型として表示されます。

simplejsonライブラリは、Pythonの標準ライブラリであるjsonモジュールと互換性があります。

そのため、json.loads()json.load()と同様の使い方ができます。

ただし、simplejsonライブラリの方が高速であるため、大量のデータを扱う場合には特に効果的です。

エラーハンドリングと例外処理

文字列が正しいjson形式でない場合のエラーハンドリング

JSON形式の文字列を辞書型に変換する際、文字列が正しいJSON形式でない場合にはエラーが発生します。

このような場合に備えて、適切なエラーハンドリングを行うことが重要です。

Pythonのjsonモジュールでは、json.loads()関数を使用して文字列を辞書型に変換します。

この関数は、文字列が正しいJSON形式でない場合にjson.JSONDecodeErrorという例外を発生させます。

以下は、文字列が正しいJSON形式でない場合のエラーハンドリングの例です。

import json

json_string = '{"name": "John", "age": 30, "city": "Tokyo"'

try:
    data = json.loads(json_string)
    print(data)
except json.JSONDecodeError as e:
    print("JSON形式の文字列ではありません。エラーメッセージ:", e)

上記の例では、json_stringという変数に正しいJSON形式でない文字列が代入されています。

json.loads()関数を実行する際には、try-except文を使用して例外処理を行っています。

もし文字列が正しいJSON形式でない場合、JSONDecodeErrorが発生し、エラーメッセージが表示されます。

ファイルが存在しない場合のエラーハンドリング

JSON形式のデータをファイルから読み込む場合、存在しないファイルを指定した場合にはエラーが発生します。

このような場合に備えて、ファイルの存在を事前に確認し、適切なエラーハンドリングを行うことが重要です。

Pythonのjsonモジュールでは、json.load()関数を使用してファイルからJSONデータを読み込みます。

この関数は、存在しないファイルを指定した場合にFileNotFoundErrorという例外を発生させます。

以下は、ファイルが存在しない場合のエラーハンドリングの例です。

import json

filename = "data.json"

try:
    with open(filename, "r") as file:
        data = json.load(file)
        print(data)
except FileNotFoundError:
    print("ファイルが存在しません。")

上記の例では、filenameという変数に存在しないファイル名が代入されています。

open()関数を使用してファイルを開く際には、try-except文を使用して例外処理を行っています。

もしファイルが存在しない場合、FileNotFoundErrorが発生し、エラーメッセージが表示されます。

エラーハンドリングと例外処理を適切に行うことで、プログラムの安定性を高めることができます。

目次から探す