【问题标题】:Python, parsing thru dict and change data typePython,通过 dict 解析并更改数据类型
【发布时间】:2015-11-26 00:37:14
【问题描述】:

我对 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 mongodb datetime python-3.x pymongo


    【解决方案1】:

    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 可能有助于获得首选日期格式。

    【讨论】:

      猜你喜欢
      • 2013-07-09
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      相关资源
      最近更新 更多