python - 对于应用了 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无济于事。
我真的很感激任何帮助!
解决方案
谢谢大家的帮助。
在 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))
推荐阅读
- .net-core - .net 核心包和对 .net 运行时的依赖
- ionic-framework - Agora Video Sdk 本地视频不可见 只有连接的客户端视频可见 没有两种方式可见
- python - Python双重导入奇怪的行为
- google-chrome-devtools - 检查 firefox devtools 扩展
- flutter - 使用 Flutter 2.0 / Dart 12 在 flutter_openvpn 中构建 win32 插件错误
- microsoft-graph-api - 读取 MS Graph 中的所有组需要什么权限
- react-admin - 如何设置由 FieldTitle 组件为验证 = {required()} 字段添加的星号颜色
- azure-cosmosdb - 使用 RBAC 在 Azure Cosmos DB 帐户中创建数据库
- spring-boot - ManyToOne 映射和findingBySchoolId
- gridview - SwiftUi Nested ForEach 导致同一视图的意外渲染