PythonでbytesをJSONにエンコードする方法について説明します。この記事は、Stack Overflowの質問と公式ドキュメンテーションを参考にしています。

まず、Pythonのjsonモジュールは、エンコードする際に文字列を期待します。しかし、base64.b64encode()はbytesをエンコードするため、これらのbytesをASCIIコーデックを使用して文字列に変換する必要があります。

import base64

# データをエンコード
encoded = base64.b64encode(b'data to be encoded')  # b'ZGF0YSB0byBiZSBlbmNvZGVk' (「b」に注目)
data['bytes'] = encoded.decode('ascii')  # 'ZGF0YSB0byBiZSBlbmNvZGVk'

元のデータを取得するために、再エンコードする必要はありません。なぜなら、b64decode()はASCIIのみの文字列と同様にbytesを処理するからです。

decoded = base64.b64decode(data['bytes'])  # b'data to be encoded'

また、bytesオブジェクトがほぼJSONであるが、シングルクォートをダブルクォートに置き換える必要があり、それは文字列である必要があります。

import json

my_bytes_value = b'[{\\'Date\\': \\'2016-05-21T21:35:40Z\\', \\'CreationDate\\': \\'2012-05-05\\', \\'LogoType\\': \\'png\\', \\'Ref\\': 164611595, \\'Classe\\': [\\'Email addresses\\', \\'Passwords\\'],\\'Link\\':\\'[5](http://some_link.com)\\'}]'
# UTF-8 bytesをUnicodeにデコードし、シングルクォートをダブルクォートに置き換えて有効なJSONにします
my_json = my_bytes_value.decode('utf8').replace("'", '"')
print(my_json)
print('- ' * 20)

# JSONをPythonリストにロードし、それをフォーマットされたJSONとしてダンプします
data = json.loads(my_json)
s = json.dumps(data, indent=4, sort_keys=True)
print(s)

以上がPythonでbytesをJSONにエンコードする方法についての説明です。この情報が役立つことを願っています。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です