应用了 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))