Python,解析dict并更改数据类型

时间:2015-08-31 21:36:49

标签: json mongodb datetime python-3.x pymongo

我对Python& MongoDB的。我试图首先从mongoDB获取所有文档到字典,然后逐个迭代到一些业务逻辑。

dest_docs = [doc for dest_collection.find的doc({key:{' $ in':_ ids}})]    dest_docs_dict = {doc [key]:dest_docs中doc的doc} ...... 对于_ids中的键:       source_doc = source_docs_dict.get(key,None)       dest_doc = dest_docs_dict.get(key,None)

我需要文档以干净的JSON格式表示,但我看到python表示像这样的日期值&#34; datetime.datetime(2020,8,31,4,0​​)&#34;。< / p>

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

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

SAMPLE JSON-DICT {&#39; prod_doc_key&#39;:&#39; StaplesCACAS / en-CA / 1-CA / CL169792 / 12870&#39;,&#39;元数据&#39;:{&# 39; store_id&#39;:6051,&#39; partnumber&#39;:&#39; 12870&#39;},&#39;促销&#39;:{&#39; promomessage&#39;:[{& #39; enddate&#39;:datetime.datetime(2020,8,31,4,0​​),&#39; name&#39;:&#39;购买更多,保存更多&#39;,&#39; type_name& #39;:&#39;促销优惠到期&#39;,&#39; startdate&#39;:datetime.datetime(2012,8,1,4,0​​),&#39; typeid&#39;:35, &#39;文字&#39;:&#39;优惠截止日期为08/31/2020&#39;}]}}}

1 个答案:

答案 0 :(得分:0)

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可能对获取首选日期格式很有用。

相关问题