How to encode bytes in JSON? json.dumps() throwing a TypeError

后端 未结 1 1121
走了就别回头了
走了就别回头了 2020-12-15 02:48

I am trying to encode a dictionary containing a string of bytes with json, and getting a is not JSON serializable error:

import base         


        
1条回答
  •  醉梦人生
    2020-12-15 03:48

    The JSON format only supports unicode strings. Since base64.b64encode encodes bytes to ASCII-only bytes, you can use that codec to decode the data:

    import base64
    
    encoded = base64.b64encode(b'data to be encoded')  # b'ZGF0YSB0byBiZSBlbmNvZGVk' (notice the "b")
    data['bytes'] = encoded.decode('ascii')            # 'ZGF0YSB0byBiZSBlbmNvZGVk'
    

    Note that to get the original data back you don't need to re-encode it to bytes because b64decode handles ASCII-only strings as well as bytes:

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

    0 讨论(0)
提交回复
热议问题