【问题标题】:How to convert ObjectId to String in python?如何在python中将ObjectId转换为String?
【发布时间】:2016-04-19 09:52:08
【问题描述】:

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

@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)

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

 var myList = {{ pass_tmp|tojson|safe }}
        // Builds the HTML Table out of myList json data from Ivy restful service.
         function buildHtmlTable() {
             var columns = addAllColumnHeaders(myList);

             for (var i = 0 ; i < myList.length ; i++) {
                 var row$ = $('<tr/>');
                 for (var colIndex = 0 ; colIndex < columns.length ; colIndex++) {
                     var cellValue = myList[i][columns[colIndex]];

                     if (cellValue == null) { cellValue = ""; }

                     row$.append($('<td/>').html(cellValue));
                 }
                 $("#excelDataTable").append(row$);
             }
         }

那么有人有什么好的建议来解决这个问题吗?

【问题讨论】:

标签: javascript python json serialization


【解决方案1】:

我已经解决了这个问题,只需将 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}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多