如何在python中将ObjectId转换为String?

时间:2016-04-19 09:52:08

标签: javascript python json serialization

我在json中将结果传递给了javascript。但是当我使用var myList = {{ pass_tmp|tojson|safe }}将结果转换为json时,有一个错误表示TypeError: ObjectId('') is not JSON serializable。我已经阅读了这个问题TypeError: ObjectId('') is not JSON serializable。但是这个问题的情况与我的有点不同。我必须将它转换为烧瓶模板中的json而不是python文件。我必须使用命令{{ 1}}将此文件从html传递给javascript。所以我想知道我是否可以将var myList = {{ pass_tmp|tojson|safe }}转换为ObjectId? 这是我的Flask应用代码:

String

这是我的模板(javascript)代码:

@app.route('/details/', methods=['GET'])
def details():
    if request.method == 'GET':
        mongoClient = pymongo.MongoClient('localhost', 27017)
        name = session['name']
        print name
        db = mongoClient[name]
        results = db[name].find()
        json_results= []
        for result in results:
            json_results.append(result)
        # json_tmp = toJson(json_results)
        return render_template('details.html', pass_tmp=json_results)

那么有没有人有任何好的建议来解决这个问题?

1 个答案:

答案 0 :(得分:0)

我通过将json传递给模板而不是结果来解决这个问题。

   @app.route('/details/', methods=['GET'])
def details():
    if request.method == 'GET':
        mongoClient = pymongo.MongoClient('localhost', 27017)
        name = session['name']
        print name
        db = mongoClient[name]
        results = db[name].find()
        json_results= []
        for result in results:
            json_results.append(result)
        json_tmp = toJson(json_results)
        return render_template('details.html', pass_tmp=json_tmp)

在模板中使用它: var myList = {{ pass_tmp|safe }}代替var myList = {{pass_tmp|tojson|safe}}