我正在使用python包pymongo从mongodb数据库中检索数据。
>>> r = collection.find() # returns an object of class 'Cursor'然后我转换成一个列表
>>> l = list(r) # returns a 'list' of 'dict'以下是print(l)返回的内容:
>>> [{u'date': datetime.datetime(2009, 11, 10, 10, 45), u'_id': 1, u'name': u'name1', u'value': 11},{u'date': datetime.datetime(2013, 11, 10, 10, 45), u'_id': 2, u'name': u'name2', u'value': 22}]现在我需要转换成JSON,这样我就可以操作它了。
>>> json.dumps(l)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
return _iterencode(o, 0)
File "/usr/lib/python2.7/json/encoder.py", line 178, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: datetime.datetime(2009, 11, 12, 11, 14) is not JSON serializable我还试图跟踪http://api.mongodb.org/python/1.7/api/pymongo/json_util.html,但没有成功:编辑:该链接的最新版本是util.html
>>> json.dumps(l, default=json_util.default)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'json_util' is not defined 注:,我需要使用R包rPython及其函数rPython::python.get("l")将这个结果推到R上。
侧问题:u(u‘’Date‘,u’‘name’等)是什么?在dict列表中的每个字段之前?
发布于 2013-10-30 05:17:46
你指出的pymongo文档已经过时了。如果您使用的是1.7版本,我建议您进行更新。使用更新的版本,您可以这样做:
from bson.json_util import dumps
dumps(l)侧回答:u'name'、u'date'、u'_id'等是数据库中文档字段的名称。
发布于 2013-10-30 06:44:53
from bson import json_util
json.dumps(result,default=json_util.default)发布于 2020-08-01 14:12:31
在我的情况下,这个错误是由于烧瓶中的mongo DB id对象,您所要做的就是转换id (注意:如果您需要id转换,否则您也可以弹出它),我正在分享我的解决方案,希望这能帮助到某人。
from flask import jsonify
def get_data(self,data):
data['_id'] = str(data['_id'])
return data
app = Flask(__name__)
@app.route('/')
def apimethod():
temp = [self.get_data(i) for i in self.collection.find()]
return jsonify(temp)还有,从芒果里倒出来的东西也帮不了什么忙
from bson.json_util import dumps,loads因为它返回的是一个字符串,而不是dict,在我的情况下,这个字符串是用来创建API的,如果我转储的话,我必须再次加载。
https://stackoverflow.com/questions/19674311
复制相似问题