rabbitmq 如何将图像或JSON中的图像字节数组从客户端发送到后端服务器,然后将其存储在Mongodb中

btxsgosb  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(1)|浏览(148)

我正在开发一个微服务项目,我使用Python作为语言,RabbitMQ作为消息代理。我正在开发一个App Store应用程序,我面临着这样一个问题:前端应该以JSON格式向我发送一些数据,其中包括(应用程序的名称-〉字符串,应用程序的标题-〉字符串,应用程序的一个或多个图像-〉图像....),并且将通过RabbitMQ作为请求发送,后端应该使用该请求并将这些数据存储在Mongodb数据库中,然后返回一个响应,例如{“Success”:false}。
我尝试了很多方法,我知道如何在数据库中存储图像,但我不知道如何在JSON中发送图像数据,我尝试了base64编码,utf8,latin 1但是都不起作用,因为type bytes不是JSON可序列化的,就像错误说的那样。我在互联网上搜索了很多,但是我没有找到我想要的。我在寻找,虽然有时也有类似的问题,但我几乎尝试了一切,他们没有提供我在寻找什么。

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:bytes类型的对象不是JSON可序列化的。
我试着看看如何将字节转换为字符串,以便可以在JSON中发送它,但我发现不适合我,因为我尝试了base64编码和latin 1编码...

uwopmtnx

uwopmtnx1#

您的字典必须包含Bytes对象,这是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

相关问题