首页 > 解决方案 > 对于应用了 base64 解码的数据,json.loads() 中的错误

问题描述

我正在尝试在 python 中使用 json.loads()

我得到错误:

JSON 对象必须是 str,而不是 'bytes'

a = {'h': '123', 'w': '12345', 'data': "b'eyJod2lkIjpwomfcwpvepovnepovqrepniLLKJAMSNDMSNDMAWEFMOEDAad='"}


a.update(json.loads(base64.b64decode(a['data'])))

在这里,a 的“数据”部分被加载为带有 b64 编码的 json 转储。

'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无济于事。

我真的很感激任何帮助!

标签: pythonjsonutf-8base64decoding

解决方案


谢谢大家的帮助。

在 Stackoverflow 上进行大量搜索并在我的本地机器上进行测试后,我能够深入了解这一点。

传入的对象(a['data'])有一些不可 utf-8 解码的值。

它的形式是b'xxxsknoen'

我最终删除了前面和结尾的 b 和引号,然后将其转换为 str。

var = base64.b64decode(str(a['data'])[2:-1]).decode('utf-8')
a.update(json.loads(var))

推荐阅读