Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save waikyaw9999/f5731fcc253e872d5323830a7af26bc0 to your computer and use it in GitHub Desktop.
Save waikyaw9999/f5731fcc253e872d5323830a7af26bc0 to your computer and use it in GitHub Desktop.
Fix: TypeError: ObjectId is not JSON serializable: A Flask JSONEncoder for Mongoengine documents. Specifically useful for use with Flask-Mongoengine.
from flask import Flask
from flask.json import JSONEncoder
from bson import json_util
from mongoengine.base import BaseDocument
from mongoengine.queryset.base import BaseQuerySet
class MongoEngineJSONEncoder(JSONEncoder):
def default(self,obj):
if isinstance(obj,BaseDocument):
return json_util._json_convert(obj.to_mongo())
elif isinstance(obj,BaseQuerySet):
return json_util._json_convert(obj.as_pymongo())
return JSONEncoder.default(self, obj)
'''
To use:
from mongoengine_jsonencoder import MongoEngineJsonEncoder
app = Flask(__name__)
app.json_encoder = MongoEngineJSONEncoder
Now Flask's jsonify works for Mongoengine querysets, and documents.
'''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment