首页 文章

从pymongo Flask验证Json

提问于
浏览
0

我正在使用Flask和Mongo DB来构建Rest API .

我不确定我使用pymongo从MongoDB获得的数据是有效的JSON .

CODE

tasks = [
{
    'id': 1,
    'title': u'Buy groceries',
    'description': u'Milk, Cheese, Pizza, Fruit, Tylenol',
    'done': False
},
{
    'id': 2,
    'title': u'Learn Python',
    'description': u'Need to find a good Python tutorial on the web',
    'done': False
}
]


@app.route('/tankover/api/v1.0/posts', methods=['GET'])
def post():
    db = connection.posthub
    cursor = dumps(db.post.find())
    return jsonify({'cursor': cursor})

当我jsonify硬编码数据不显示整洁和格式良好 .

OUTPUT

{
 "cursor": [
  {
    "description": "Milk, Cheese, Pizza, Fruit, Tylenol", 
    "done": false, 
    "id": 1, 
    "title": "Buy groceries"
  }, 
  {
    "description": "Need to find a good Python tutorial on the web", 
    "done": false, 
    "id": 2, 
    "title": "Learn Python"
  }
 ]
}

但是当我使用数据库中的数据时 . 我不确定类型和格式 .

{
"cursor": "[{\"title\": \"sankit\", \"_id\"
{\"$oid\":\"597619b7c07b2dc30a108def\"}, \"description\": \"hello to 
everyone we are up 
for a great start and moving good\", \"tags\": [\"demo1\", \"demo2\"]}, 
{\"_id\": {\"$oid\": \"59761b2cc6568a4e341b6b89\"}, \"description\": \"lets 
add some thing new\", \"tags\": [\"bonjour\", \"salut\"], \"title\": 
\"hi\"}, 
{\"_id\": {\"$oid\": \"59a5c5f6c6568a0be4447dfb\"}, \"description\": \"okay 
okay okay\", \"tags\": [\"socks\", \"gifts\"], \"title\": \"tinni\"}]"
}

它有效且正常吗?

1 回答

  • 2

    正如其中一条评论所述,您已经两次调用 dumps . 请注意flask.json.jsonify()是一个包装 dumps() 的函数 .

    注意pymongo find()返回游标对象而不是文档 . 例如,你可以尝试下面:

    def post():
        db = connection.posthub 
        documents = [doc for doc in db.post.find({}, {"_id":0})]
        return jsonify({'cursor': documents})
    

    如果您想序列化任何MongoDB JSON对象,例如 ObjectIdDate() ,您可以使用bson.json_util例如:

    from bson import json_util 
    
    def post():
        db = connection.posthub 
        documents = [doc for doc in db.post.find({})]
        return json_util.dumps({'cursor': documents})
    

相关问题