背景:在使用python执行mongo shell命令时,返回的结果中id为ObjectId类型,这明显不符合json的格式要求,转换起来很费劲,下面提供一种方式快速转换,仅供参考。
demo.py
# -*- coding: UTF-8 -*-
"""
# demo
"""
from bson.objectid import ObjectId
import json
class JSONEncoder(json.JSONEncoder):
def default(self, o): # pylint: disable=E0202
if isinstance(o,ObjectId):
return str(o)
return json.JSONEncoder.default(self,o)
a = '{ "_id" : ObjectId("600ebc4458e50b2bd09a717f"), "__ts" : 1626701288, "description" : [ ]}'
print("origin_data: %s." % a)
print("type_before: %s." % type(a))
print("type_eval: %s." % type(eval(a)))
result = JSONEncoder().encode(eval(a))
print("JSONEncoder_result: %s." % result)
输出结果:
origin_data: { "_id" : ObjectId("600ebc4458e50b2bd09a717f"), "__ts" : 1626701288, "description" : [ ]}.
type_before: <class 'str'>.
type_eval: <class 'dict'>.
JSONEncoder_result: {"_id": "600ebc4458e50b2bd09a717f", "__ts": 1626701288, "description": []}.