登录
首页 >  Golang >  Go问答

在Python中如何使用BSON模块发送字典数据

来源:stackoverflow

时间:2024-03-08 09:03:26 225浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《在Python中如何使用BSON模块发送字典数据》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我在 golang 中有一个 api 函数,可以接收 json 数据并与邮递员很好地合作 但我想用 python3 调用 api 但解析主体出错 这是我的 golang 代码:

var approve bson.m
err := c.bodyparser(&approve)

这是我在 patch api 中的数据:

{
    "result" : true
}

这是我的 python 脚本:

jsondata = bson.bson.encode({'result': true})
  options = codecoptions(document_class=collections.ordereddict)
  #decoded_doc = bson.bson(jsondata).decode(codec_options=options)
  decoded_doc = bson.decode(jsondata, codec_options=options)
  r = requests.patch(approvurl,data=decoded_doc,headers={'content-type':'application/json','authorization':api_key,'imei':'1234567890','phone':'123456789','email':'[email protected]'} )

我的 golang 后端抛出了这个异常:

expected { character for map value

我比较 wirshark 中的 json 对象: 这是给邮递员的: 在此输入图像描述 和 这是我的 python 脚本 在此输入图像描述

请帮我解决 python 脚本中的问题


正确答案


我认为发生的情况是您正在使用 requests.patchdata 参数传递 python 字典,该参数需要一个字符串。看起来您想要发送 json,因此您应该使用 json 参数(它会自动添加 application/json 内容类型)。

此外,您似乎正在将 python 字典编码为 bson 格式,只是为了再次将其重新解码回 python 字典。除非我遗漏了什么,否则你不需要这样做。

因此,您的 python 脚本可以更改为对 requests.patch 的单个调用:

r = requests.patch(
    approvurl,
    json={'result': True},
    headers={'Authorization': API_KEY, ...},
)

理论要掌握,实操不能落!以上关于《在Python中如何使用BSON模块发送字典数据》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>