pythonのmongoengineでmodelをjsonにしたい

mongoengineを触っている。
Documentをjsonにするメソッドが用意されてなかった。

https://gist.github.com/285017
を見つけたが、listの変換がなかったので改変した。

import copy, datetime, time, json
# class Doc(Document):
  def to_json(self):
    def _convert_dict_to_json(data):
      struct = {}
      # mongo固有のキーとかも残るのでいらないやつを枝切りする
      ignore = ['_id', '_cls', '_types']
      for k in data:
        if k in ignore: continue
        struct[k] = _convert_value_as_json(data[k])
      return struct

    def _convert_list_to_json(data):
      struct = []
      for v in data:
        struct.append(_convert_value_as_json(v))
      return struct

    def _convert_value_as_json(value):
      if isinstance(value, list):
        return _convert_list_to_json(value)
      elif isinstance(value, dict):
        return _convert_dict_to_json(value)
      elif isinstance(value, datetime.datetime):
        return int(time.mktime(value.timetuple()) + value.microsecond/1e6)
      elif isinstance(value, (unicode, str, int, bool)):
        return value

    return json.dumps(_convert_value_as_json(self.to_mongo()))

これをDocumentを継承したクラスにくっつけてあげれば再帰的に変換するはず