首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON序列化Mongodb

JSON序列化Mongodb
EN

Stack Overflow用户
提问于 2013-10-30 05:09:45
回答 5查看 68.8K关注 0票数 33

我正在使用python包pymongo从mongodb数据库中检索数据。

代码语言:javascript
复制
>>> r = collection.find()   # returns an object of class 'Cursor'

然后我转换成一个列表

代码语言:javascript
复制
>>> l = list(r)             # returns a 'list' of 'dict'

以下是print(l)返回的内容:

代码语言:javascript
复制
>>> [{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,这样我就可以操作它了。

代码语言:javascript
复制
>>> 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

代码语言:javascript
复制
>>> 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列表中的每个字段之前?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-10-30 05:17:46

你指出的pymongo文档已经过时了。如果您使用的是1.7版本,我建议您进行更新。使用更新的版本,您可以这样做:

代码语言:javascript
复制
from bson.json_util import dumps

dumps(l)

util.html

侧回答u'name'u'date'u'_id'等是数据库中文档字段的名称。

票数 64
EN

Stack Overflow用户

发布于 2013-10-30 06:44:53

代码语言:javascript
复制
from bson import json_util



json.dumps(result,default=json_util.default)
票数 13
EN

Stack Overflow用户

发布于 2020-08-01 14:12:31

在我的情况下,这个错误是由于烧瓶中的mongo DB id对象,您所要做的就是转换id (注意:如果您需要id转换,否则您也可以弹出它),我正在分享我的解决方案,希望这能帮助到某人。

代码语言:javascript
复制
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)

还有,从芒果里倒出来的东西也帮不了什么忙

代码语言:javascript
复制
from bson.json_util import dumps,loads

因为它返回的是一个字符串,而不是dict,在我的情况下,这个字符串是用来创建API的,如果我转储的话,我必须再次加载。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19674311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档