[Python]json.loadsで日本語やUTF-8を扱う

PythonでJSONを扱う際に、日本語やUTF-8の文字列を扱う場合には、注意が必要です。この記事では、json.loadsを使って、日本語やUTF-8を含むJSONデータを正しく扱う方法を解説します。

PythonでJSONを扱う基本的な方法

PythonでJSONを扱うには、標準ライブラリのjsonモジュールを使います。jsonモジュールには、JSON文字列をPythonオブジェクトに変換するjson.loads、PythonオブジェクトをJSON文字列に変換するjson.dumpsなどの関数が用意されています。

json.loadsの基本的な使い方

json.loadsは、JSON文字列をPythonオブジェクトに変換する関数です。基本的な使い方は、以下の通りです。

import json
json_str = '{"name": "Alice", "age": 20}'
data = json.loads(json_str)
print(data)

上記のコードでは、JSON文字列{“name”: “Alice”, “age”: 20}をPythonオブジェクトに変換し、変数dataに代入しています。変数dataには、{“name”: “Alice”, “age”: 20}を表すPythonの辞書型オブジェクトが格納されます。

json.loadsでUTF-8を扱う方法

JSON文字列にUTF-8の文字列が含まれる場合には、json.loadsを使ってもエラーが発生することがあります。その場合には、Python 3.8以前はjson.loadsの引数にencoding=”utf-8″を指定することで、正しく変換することができます。

import json
json_str = '{"name": "アリス", "age": 20}'
data = json.loads(json_str, encoding="utf-8")
print(data)

上記のコードでは、JSON文字列{“name”: “アリス”, “age”: 20}をPythonオブジェクトに変換し、変数dataに代入しています。変数dataには、{“name”: “アリス”, “age”: 20}を表すPythonの辞書型オブジェクトが格納されます。

ただし、Python3.9以上では、encodingは廃止されているため、UTF-8エンコーディングされたテキストを使用しましょう。

json.loadsで改行を扱う方法

JSON文字列に改行が含まれる場合には、json.loadsを使ってもエラーが発生することがあります。その場合には、改行文字をエスケープ文字で表現する必要があります。

import json
json_str = '{"message": "This is a \\n test message."}'
data = json.loads(json_str)
print(data)

上記のコードでは、JSON文字列{“message”: “This is a \\n test message.”}をPythonオブジェクトに変換し、変数dataに代入しています。変数dataには、{“message”: “This is a \\n test message.”}を表すPythonの辞書型オブジェクトが格納されます。

json.loadsで日本語を扱う方法

JSON文字列に日本語が含まれる場合には、json.loadsを使ってもエラーが発生することがあります。その場合には、文字列をutf-8に変換してからjson.loadsを使用することで、正しく変換することができます。


まとめ

JSONを扱う際には、jsonモジュールのjson.loadsを使うことで、JSON文字列をPythonオブジェクトに変換することができます。日本語やUTF-8を含むJSON文字列を正しく扱うためには、紹介した方法を試してみましょう。