所以我正在从事微服务项目,我正在使用Python作为语言,并使用RabbitMQ作为消息代理。我正在开发一个App Store应用程序,并且遇到了这个问题,即前端应以JSON格式向我发送一些数据,例如((应用程序名称-> str,应用程序标题-> str,图像或应用程序的图像->图像....),并将其作为请求通过RabbitMQ发送,后端应使用该请求并将这些数据存储在Mongodb数据库中,然后返回响应,例如{“ Success”:true }。
我尝试了很多事情,我想出了如何在数据库中存储图像。我没有弄清楚的是如何在JSON中发送该图像数据。 我尝试了base64编码,utf8,latin1,但都无法正常工作,因为错误提示说类型字节不是JSON可序列化的。我在Internet上进行了很多搜索,但是虽然有时会遇到类似的问题,但我并未完全找到所需的内容,但是我几乎尝试了所有操作,而它们却没有提供所需的内容。
data = {
"tool_owner": "John",
"developer": "John",
"icon": # icon of the app,
"images": # list of images,
"rating": {"user": "daniel", "date": str(now), "number": 5},
}
d = json.dumps(data) # this is my goal. to send the data as a JSON
temp = json.loads(d) # and receive it in the backend and parse it so I
can retrieve the data and store it in mongodb
我第一次遇到此错误:TypeError:字节类型的对象不可JSON序列化。 我试图查看如何将字节转换为字符串,以便可以以JSON格式发送它,但是自从我尝试使用base64编码和latin1编码后,发现对我没有用... 我希望有人已经遇到了这个问题,可以为我提供一些提示。谢谢大家
答案 0 :(得分:0)
您的字典必须包含字节对象,而json标准不支持。
您可以使用jsonextra
进行序列化/反序列化来解决此问题。
$ pip install jsonextra
import jsonextra as json
d = {...} # contains bytes objects
x = json.dumps(d)
y = json.loads(x)
assert d == y
有关更多信息,请参见https://github.com/den4uk/jsonextra。