无法从JSON反序列化Pymongo ObjectId和DateTime

2024-10-03 09:07:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法从MongoDB Json文档反序列化ObjectId()和datetime()。在

我的MongoDB Json文档如下:

result = "[(u'profileDetails', {u'basicDetails': {u'dateOfBirth': datetime.datetime(1992, 2, 1, 0, 0), u'customerCode': u'C037799'}, u'xDirLevel': {u'masterCode': 1}}), (u'_id', ObjectId('58872e99321a0c8633291b3f'))]"

我想反序列化datetime()和ObjectId()函数。在

我的Python代码如下:

^{pr2}$

当我打印result时,如下所示:

"[(u'profileDetails', {u'basicDetails': {u'dateOfBirth': datetime.datetime(1992, 2, 1, 0, 0), u'customerCode': u'C037799'}, u'xDirLevel': {u'masterCode': 1}}), (u'_id', ObjectId('58872e99321a0c8633291b3f'))]"

为什么不反序列化对象


Tags: 文档idjsondatetime序列化mongodbresultobjectid
1条回答
网友
1楼 · 发布于 2024-10-03 09:07:01

假设我在数据库test中有一个集合User,并希望将其序列化为JSON:

import pymongo
from bson.json_util import dumps
client = pymongo.MongoClient()
db = client.test
user = db["user"]
# I query the database to get one user : 
res = user.find_one({"country": "us"})
In [66]: res
Out[66]: 
{u'_id': ObjectId('5880fa045fa6a6ffa97a82c7'),
 u'date': datetime.datetime(1992, 2, 1, 0, 0),
 u'name': u'steve',
 u'country': u'us'}
In [63]: dumps(res)
Out[63]: '{"country": "us", "_id": {"$oid": "5880fa045fa6a6ffa97a82c7"}, "name": "steve", "date": {"$date": 696902400000}}'

如果要将其保存在文件中:

^{pr2}$

现在,如果您不能修改result格式,您仍然可以这样做:

import datetime
from bson.json_util import dumps
from bson.objectid import ObjectId

#transform string to list    
result = eval(result)
result_dict = dict(result)
dumps(result_dict)
Out[79]: '{"profileDetails": {"basicDetails": {"dateOfBirth": {"$date": 696902400000}, "customerCode": "C037799"}, "xDirLevel": {"masterCode": 1}}, "_id": {"$oid": "58872e99321a0c8633291b3f"}}'

相关问题 更多 >