PythonでJSONを扱う際、json.dumps()
関数は非常に便利です。しかし、この関数は文字列を入力として期待しており、bytes
型のデータをエンコードする際には注意が必要です。
json.dumpsとは
json.dumps()
関数は、データをJSON形式にエンコードすることができる関数です。具体的には、Pythonの辞書型を文字列に変換します。
import json
data = {"name": "tarou", "age": 23, "gender": "man"}
encoded_data = json.dumps(data)
print(encoded_data) # {"name": "tarou", "age": 23, "gender": "man"}
print(type(encoded_data)) # <class 'str'>
このように、json.dumps()
関数を使用すると、辞書型のデータをJSON形式の文字列に変換できます。
bytes型のデータをjson.dumpsで扱う
しかし、bytes
型のデータをjson.dumps()
関数で扱う場合、そのままではエラーが発生します。これは、json.dumps()
関数が文字列を入力として期待しているためです。
import json
data = {"name": "tarou", "age": 23, "gender": b"man"}
# TypeError: Object of type bytes is not JSON serializable
encoded_data = json.dumps(data)
この問題を解決するためには、bytes
型のデータを文字列に変換する必要があります。そのためには、decode()
メソッドを使用します。
import json
data = {"name": "tarou", "age": 23, "gender": b"man".decode('utf-8')}
encoded_data = json.dumps(data)
print(encoded_data) # {"name": "tarou", "age": 23, "gender": "man"}
print(type(encoded_data)) # <class 'str'>
このように、bytes
型のデータをdecode()
メソッドで文字列に変換することで、json.dumps()
関数で扱うことができます。
以上が、Pythonでbytes
型のデータとjson.dumps()
関数を使いこなす方法です。これらの知識を活用して、PythonでのJSONの扱いをよりスムーズに行いましょう。