Tôi đang gặp một số vấn đề với Mongodb và Python (Flask).đối tượng không phải là JSON serializable
Tôi có tệp api.py này và tôi muốn tất cả các yêu cầu và câu trả lời đều bằng JSON, vì vậy tôi thực hiện như vậy.
#
# Imports
#
from datetime import datetime
from flask import Flask
from flask import g
from flask import jsonify
from flask import json
from flask import request
from flask import url_for
from flask import redirect
from flask import render_template
from flask import make_response
import pymongo
from pymongo import Connection
from bson import BSON
from bson import json_util
#
# App Create
#
app = Flask(__name__)
app.config.from_object(__name__)
#
# Database
#
# connect
connection = Connection()
db = connection['storage']
units = db['storage']
#
# Request Mixins
#
@app.before_request
def before_request():
#before
return
@app.teardown_request
def teardown_request(exception):
#after
return
#
# Functions
#
def isInt(n):
try:
num = int(n)
return True
except ValueError:
return False
def isFloat(n):
try:
num = float(n)
return True
except ValueError:
return False
def jd(obj):
return json.dumps(obj, default=json_util.default)
def jl(obj):
return json.loads(obj, object_hook=json_util.object_hook)
#
# Response
#
def response(data={}, code=200):
resp = {
"code" : code,
"data" : data
}
response = make_response(jd(resp))
response.headers['Status Code'] = resp['code']
response.headers['Content-Type'] = "application/json"
return response
#
# REST API calls
#
# index
@app.route('/')
def index():
return response()
# search
@app.route('/search', methods=['POST'])
def search():
return response()
# add
@app.route('/add', methods=['POST'])
def add():
unit = request.json
_id = units.save(unit)
return response(_id)
# get
@app.route('/show', methods=['GET'])
def show():
import pdb; pdb.set_trace();
return response(db.units.find())
#
# Error handing
#
@app.errorhandler(404)
def page_not_found(error):
return response({},404)
#
# Run it!
#
if __name__ == '__main__':
app.debug = True
app.run()
Vấn đề ở đây là dữ liệu mã hóa json đến và đi từ mongo. Có vẻ như tôi đã có thể "hack" các tuyến đường thêm bằng cách chuyển request.json làm từ điển để lưu, vì vậy thats tốt ... vấn đề là/hiển thị. Mã này không hoạt động ... Khi tôi đăng nhập, tôi nhận được
TypeError: <pymongo.cursor.Cursor object at 0x109bda150> is not JSON serializable
Bất kỳ ý tưởng nào? Tôi cũng hoan nghênh mọi đề xuất về phần còn lại của mã, nhưng JSON đang giết tôi.
Cảm ơn trước!
Tôi chỉ muốn thêm lỗi mà dẫn tôi ở đây cho câu hỏi này và giải pháp: 'Lỗi Loại: unhashable loại: 'dict'' –