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を継承したクラスにくっつけてあげれば再帰的に変換するはず