【发布时间】:2017-09-25 14:08:43
【问题描述】:
由于某种原因,jsonify 函数将我的datetime.date 转换为似乎是 HTTP 日期的内容。使用jsonify时如何保持yyyy-mm-dd格式的日期?
test_date = datetime.date(2017, 4, 27)
print(test_date) # 2017-04-27
test_date_jsonify = jsonify(test_date)
print(test_date_jsonify.get_data(as_text=True)) # Thu, 27 Apr 2017 00:00:00 GMT
按照 cmets 中的建议,使用 jsonify(str(test_date)) 会返回所需的格式。但是,请考虑以下情况:
test_dict = {"name": "name1", "date":datetime.date(2017, 4, 27)}
print(test_dict) # {"name": "name1", "date":datetime.date(2017, 4, 27)}
test_dict_jsonify = jsonify(test_dict)
print(test_dict_jsonify.get_data(as_text=True)) # {"date": "Thu, 27 Apr 2017 00:00:00 GMT", "name": "name1"}
test_dict_jsonify = jsonify(str(test_dict))
print(test_dict_jsonify.get_data(as_text=True)) # "{"date": datetime.date(2017, 4, 27), "name": "name1"}"
在这种情况下,str() 解决方案不起作用。
【问题讨论】:
-
将其序列化为字符串?
-
我不太明白你的意思。
-
jsonify(str(test_date)) -
当你打印一个对象时,该对象的
__str__方法被调用,所以你看到的就是这个。如果这就是您想要序列化和反序列化的内容,请在您的对象上调用str()。 -
成功了,谢谢。但是,我认为我犯了一个错误,就是将我正在处理的案例过于简单化了。通常,当我对 datetime.date 进行 jsonify 时,它是带有其他元素的 dict 的一部分,在这种情况下,这种方法不起作用。我更新了我的问题,以更好地展示我正在处理的案例。
标签: python json date datetime flask