对于已应用base64解码的数据,json.loads()出错

时间:2018-06-05 06:56:08

标签: python json utf-8 base64 decoding

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

我收到错误:

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

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


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

这里的数据' a的一部分被加载为带有b64encoding的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 无效。

我真的很感激任何帮助!

1 个答案:

答案 0 :(得分:1)

谢谢大家的帮助。

在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))