问题描述
我将mongoengine用于我的python flask应用程序,并将Custom ORM用于该项目。
我在GET API中遇到了一个问题,即我正在获取存储在数据库中的资产数据列表,而在检索数据时,它显示的数据如下: 代码
{
"message": "done","result": {
"asset": [
{
"_id": {
"$oid": "5fa4fb9ea33244b15c6605bc"
},"asset_download_link_android": "https://link","asset_download_link_ios": "https://link","asset_download_link_mac": "https://link","asset_download_link_windows": "https://link,"asset_id": 1,"asset_name": "car_exhibition_1","asset_size": "100MB","asset_thumbnail_url": "https://link","asset_version": "1.0.0","created_at": {
"$date": 1604647838316
},"email": "xyz@gmail.com"
},]
},"status": 200
}
现在
"_id": {
"$oid": "5fa4fb9ea33244b15c6605bc"
}
它是由我的ORM创建的,并且由于此“ $”符号,我无法继续,因为我的对象可以在开头分配一个带有特殊字符的变量。因此,请任何人都可以帮助我,如何在响应中没有$ oid字段的情况下获得响应。
assets = collection_name.objects.all()
return_val = jsonify({"message" : "done","status" : status_code,"result" :
{"asset" : assets}})
return return_val,status_code
解决方法
您可以遍历内部的assets
列表,并删除包含下面带有$
的键的所有键:
import json
import pprint
foo = json.loads("""
{
"message": "done","result": {
"asset": [
{
"_id": {
"$oid": "5fa4fb9ea33244b15c6605bc"
},"asset_download_link_android": "https://link","asset_download_link_ios": "https://link","asset_download_link_mac": "https://link","asset_download_link_windows": "https://link","asset_id": 1,"asset_name": "car_exhibition_1","asset_size": "100MB","asset_thumbnail_url": "https://link","asset_version": "1.0.0","created_at": {
"$date": 1604647838316
},"email": "xyz@gmail.com"
}
]
},"status": 200
}
""")
for asset in foo['result']['asset']:
del asset['_id']
del asset['created_at']
pprint.pprint(foo)
结果:
{'message': 'done','result': {'asset': [{'asset_download_link_android': 'https://link','asset_download_link_ios': 'https://link','asset_download_link_mac': 'https://link','asset_download_link_windows': 'https://link','asset_id': 1,'asset_name': 'car_exhibition_1','asset_size': '100MB','asset_thumbnail_url': 'https://link','asset_version': '1.0.0','email': 'xyz@gmail.com'}]},'status': 200}