flask 서버에서 pymongo를 통해 find 연산을 할 경우 결과는 cursor 형태이기 때문에 json형으로 변환하여 반환하려고 할 경우 에러를 반환합니다. 작성했던 코드와 에러는 다음과 같습니다.
@app.route('/', methods=['GET', 'POST'])
def poster():
result = mydb["polygon"].find().limit(1)
return jsonify(result)
TypeError: Object of type Cursor is not JSON serializable
Cursor 형태의 object는 json 형이 아니라는 에러를 출력하게 됩니다. 이를 해결하는 방법을 stackoverflow 탐험을 통해 발견했습니다.
먼저, json_util을 import 합니다.
from bson import json_util
이후 아래와 같이 작성하게 되면 정상적으로 연산결과를 반환할 수 있습니다.
@app.route('/', methods=['GET', 'POST'])
def poster():
result = list(mydb["polygon"].find({}).limit(1))
return json.dumps(result, default=json_util.default)
결과는 다음과 같습니다.