Pythonで文字列をJSONオブジェクト(辞書型)に変換する方法|json.loadsの使い方を解説
多くのWeb APIでは、データは辞書(JSONオブジェクト)形式の文字列として送受信されます。しかし、文字列のままでは各キーや値にアクセスできないため、意味のある情報を抽出したり、さらに加工を行ったりするには、まずPythonの辞書型へ変換する必要があります。
本記事では、Pythonの標準ライブラリであるjsonモジュールを使って、文字列をJSONオブジェクト(辞書型)に変換する基本的な方法を、サンプルコードと実行結果とともに解説します。
json.loads()とは
jsonモジュールには、以下の2つの主要な関数が用意されています。
- json.dumps():Pythonのオブジェクト(辞書など)をJSON形式の文字列に変換する(シリアライズ)
- json.loads():JSON形式の文字列をPythonのオブジェクト(辞書など)に変換する(デシリアライズ)
今回のように「文字列 → JSONオブジェクト」への変換を行う場合は、json.loads()を使用します。
サンプルコード:文字列をJSONに変換する
以下の例では、まず辞書をjson.dumps()で文字列化し、その後json.loads()で再び辞書型に戻しています。
# 文字列をJSONに変換するサンプル
# json.loads を使用
import json
# 初期化する辞書オブジェクト
ini_string = {'vishesh': 1, 'ram': 5, 'prashant': 10, 'vishal': 15}
# 辞書をJSON文字列に変換
ini_string = json.dumps(ini_string)
print("初期の辞書:", ini_string)
print("ini_object の型:", type(ini_string))
# 文字列をJSON(辞書)に変換
final_dictionary = json.loads(ini_string)
# 変換後の結果を出力
print("最終的な辞書:", str(final_dictionary))
print("final_dictionary の型:", type(final_dictionary))実行結果
初期の辞書: {"vishesh": 1, "ram": 5, "prashant": 10, "vishal": 15}
ini_object の型: <class 'str'>
最終的な辞書: {'vishesh': 1, 'ram': 5, 'prashant': 10, 'vishal': 15}
final_dictionary の型: <class 'dict'>コードのポイント
json.dumps()によって、辞書型のオブジェクトがダブルクォートで囲まれたJSON文字列(str型)に変換されていることが確認できます。json.loads()を適用すると、文字列がdict型(辞書)に戻り、通常の辞書と同じようにキーを指定して値を取得・操作できるようになります。
まとめ
Web APIから受け取ったJSON形式の文字列データを扱う際は、json.loads()で辞書型に変換するのが基本です。逆に、PythonのデータをAPIに送信したい場合はjson.dumps()で文字列化します。この2つの関数を使い分けることで、JSONデータの送受信をスムーズに行えるようになります。
-
【Python入門】strptimeを使って日付文字列をdateオブジェクトに変換する方法
Pythonでは、datetimeモジュールのstrptime関数を使うことで、文字列形式の日付データを簡単にdatetimeオブジェクトへ変換できます。この関数には、変換したい日付の文字列と、その日付がどのような書式で記述されているかを示すフォーマット指定子の2つの引数を渡します。基本的な使い方(サンプルコード)以下の例では、「2017年12月29日」という日付が「29122017」という文字列として表現されている場合に、それを日付オブジェクトへ変換しています。import datetime date_str = 29122017 # 日付文字列(2017年12月29日) format
-
【Python】辞書形式の文字列をdict型に変換する2つの安全な方法
はじめにPythonでは、文字列として表現された辞書(例:{foo: bar})を、実際の辞書(dict型)オブジェクトに変換したい場面がよくあります。この記事では、代表的な2つの変換方法である ast.literal_eval() と json.loads() の使い方を解説します。方法1: ast.literal_eval() を使うast.literal_eval() を使うと、文字列をPythonの式として安全に評価できます。この関数は、式ノードまたはPython式を含む文字列を評価しますが、許可されているのは文字列・数値・タプル・リスト・辞書・ブール値・Noneといったリテラル構造の