Python,通过字典解析并改变数据类型

Python, parsing thru dict and change data type

我是 Python 和 MongoDB 的新手。我试图首先将 mongoDB 中的所有文档提取到字典中,然后将它们逐个迭代到某些业务逻辑。

dest_docs = [doc for doc in dest_collection.find({key: {'$in':_ids}})]
dest_docs_dict = {doc[key]: doc for doc in dest_docs}
......
for key in _ids:
   source_doc = source_docs_dict.get(key, None)
   dest_doc = dest_docs_dict.get(key, None)

我需要以干净的 JSON 格式表示文档,但我看到 python 表示这样的日期值 "datetime.datetime(2020, 8, 31, 4, 0)"。

我的业务逻辑组件需要干净的 JSON 格式作为输入,我尝试使用 JSON.DUMPS() 方法但是无法解析这种类型的对象。

是否有任何解决方法可以将这些日期时间对象转换为字符串表示形式,以便 JSON 正常工作?请分享您的想法..我非常感谢任何帮助。谢谢!

SAMPLE JSON-DICT{
   'prod_doc_key': 'StaplesCACAS/en-CA/1-CA/CL169792/12870', 
   'metadata': {
       'store_id': 6051, 
       'partnumber': '12870'
    },  
    'promotions': [{
        'promomessage': {
            'enddate': datetime.datetime(2020, 8, 31, 4, 0), 
            'name': 'Buy More, Save More', 
            'type_name': 'promo offer expires', 
            'startdate': datetime.datetime(2012, 8, 1, 4, 0), 
            'typeid': 35, 
            'text': 'Offer Expires on 08/31/2020'
        }
    }]
}

JSON 没有特定的日期格式,标准 python 的 json 编码器库不会强制转换非标准数据。

无论如何,你可以使用 dump(s) 方法的 default 参数来转换非标准字段:最笨的方法如下:

import datetime, json
X = {'data': datetime.datetime.now(), 'number':10}
try:
    print json.dumps(X)
except TypeError:
    print "Sorry, it doesn't works"
print json.dumps(X, default=lambda y:str(y))

当然调查类型会更好,使用 datetime.strftime 可能有助于获得首选的日期格式。