Python「TypeError: Object of type bytes is not JSON serializable」のエラー原因と解決方法を紹介します。
結論
JSON serializableではないbytes型の変数をjson.dumpsしようとしているため発生しています。
JSON serializableな型に変換すると解決します。
JSON serializableな型であるかprint(type(変数名))で確認しましょう。
下記はエラー発生例です。
よくある原因
HTTP Request
主にファイルアップロードなどでHTTP Requestする場合に発生するケース
下記のようにファイルをopenしstring型と誤認しjson.dumpsで発生
base64
base64関連を扱う際にbytes型、string型を誤認しjson.dumpsするケース
先ほどと同様HTTP Request時にやりがちです。
JSON serializable
JSON serializableな型は以下の通り
詳細は公式ドキュメントを参照ください。
- 基本型(str, int, float, bool, None)
- dict
- list
- tuple
このため上記以外の型は、bytes型に限らず、
「TypeError: Object of type 型名 is not JSON serializable」でエラーが発生します。
0 件のコメント :
コメントを投稿