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文字列を正しく扱うためには、紹介した方法を試してみましょう。