应用了 base64 解码的数据在 json.loads() 中出错
Error in json.loads() for data that has base64 decoding applied
我正在尝试在 python
中使用 json.loads()
我收到错误:
JSON 对象必须是 str,而不是 'bytes'
a = {'h': '123', 'w': '12345', 'data': "b'eyJod2lkIjpwomfcwpvepovnepovqrepniLLKJAMSNDMSNDMAWEFMOEDAad='"}
a.update(json.loads(base64.b64decode(a['data'])))
此处 a 的 'data' 部分作为 json 使用 b64 编码的转储加载。
'data':base64.b64encode(json.dumps(test).encode()); where test = some string eg('epovqrepniLLKJAMSNDMSNDMAWEFMOEDAad=')
我试过使用:
a.update(json.loads(base64.b64decode(a['data']).decode('utf-8')))
给我一个
'utf-8' 编解码器无法解码位置中的字节:无效的连续字节
我也尝试过使用 decodebytes 而不是 b64decode 无济于事。
非常感谢任何帮助!
谢谢大家的帮助。
在 Whosebug 上进行大量搜索并在我的本地计算机上进行测试后,我能够深入了解这一点。
传入的对象 (a['data'])
有一些值不是 utf-8 可解码的。
形式为b'xxxsknoen'
我最终删除了 b 以及前后的引号,然后将其转换为 str。
var = base64.b64decode(str(a['data'])[2:-1]).decode('utf-8')
a.update(json.loads(var))
我正在尝试在 python
中使用 json.loads()我收到错误:
JSON 对象必须是 str,而不是 'bytes'
a = {'h': '123', 'w': '12345', 'data': "b'eyJod2lkIjpwomfcwpvepovnepovqrepniLLKJAMSNDMSNDMAWEFMOEDAad='"}
a.update(json.loads(base64.b64decode(a['data'])))
此处 a 的 'data' 部分作为 json 使用 b64 编码的转储加载。
'data':base64.b64encode(json.dumps(test).encode()); where test = some string eg('epovqrepniLLKJAMSNDMSNDMAWEFMOEDAad=')
我试过使用:
a.update(json.loads(base64.b64decode(a['data']).decode('utf-8')))
给我一个 'utf-8' 编解码器无法解码位置中的字节:无效的连续字节
我也尝试过使用 decodebytes 而不是 b64decode 无济于事。
非常感谢任何帮助!
谢谢大家的帮助。
在 Whosebug 上进行大量搜索并在我的本地计算机上进行测试后,我能够深入了解这一点。
传入的对象 (a['data'])
有一些值不是 utf-8 可解码的。
形式为b'xxxsknoen'
我最终删除了 b 以及前后的引号,然后将其转换为 str。
var = base64.b64decode(str(a['data'])[2:-1]).decode('utf-8')
a.update(json.loads(var))