python – jsonpickle datetime到可读的json格式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – jsonpickle datetime到可读的json格式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1821字,纯文字阅读大概需要3分钟。
内容图文
是否可以将datetime转换为可读的JSON格式(可以从javascript使用)?目前jsonpickle仅为datetime提供二进制编码值.
解决方法:
这里有几个陷阱:
首先,请不要在时区中流量不知道日期时间对象.你会感到痛苦,不是今天,也许不是明天,而是某一天.你可以从别人的错误中学习(我的),或者你可以学到很多困难.据我所知,Python允许你在没有时区的情况下制作日期时间对象是一个错误.
第二,strptime不处理时区!所以你做了正确的事情,然后你以某种格式写了你的日期,并想把它读回来,并且kablooey,你得到’%z格式错误的字符串’.格儿.
使用iso8601库来解析ISO8601日期时间字符串.时区处理.
第三,jsonpickle没有清楚地记录如何滚动你自己的DatetimeHandler.所以,是的,你只是想要一些易读的东西,你发送到Javascript或其他什么?上面的解决方案没问题.你想要的东西是清晰的,但你也想在某些时候把它拉回到Python中?嗯,比较棘手.
这里有一个提示:当您继承库以扩展其功能时,请仔细查看您正在扩展的超类.
我会以不同的方式编写DatetimeHandler.但是下面的作品,包含了我在这个主题上所有来之不易的智慧.哎哟.
import pytz
import jsonpickle
import iso8601
from datetime import datetime
class Blah(object):
def __init__(self, blah):
self.datetime = datetime.now(pytz.utc)
self.blah = blah
def to_json(self):
return jsonpickle.encode(self)
@classmethod
def from_json(cls, json_str):
return jsonpickle.decode(json_str)
class DatePickleISO8601(jsonpickle.handlers.DatetimeHandler):
def flatten(self, obj, data):
pickler = self.context
if not pickler.unpicklable:
return unicode(obj)
cls, args = obj.__reduce__()
flatten = pickler.flatten
payload = obj.isoformat()
args = [payload] + [flatten(i, reset=False) for i in args[1:]]
data['__reduce__'] = (flatten(cls, reset=False), args)
return data
def restore(self, data):
cls, args = data['__reduce__']
unpickler = self.context
restore = unpickler.restore
cls = restore(cls, reset=False)
value = iso8601.parse_date(args[0])
return value
jsonpickle.handlers.registry.register(datetime, DatePickleISO8601)
内容总结
以上是互联网集市为您收集整理的python – jsonpickle datetime到可读的json格式全部内容,希望文章能够帮你解决python – jsonpickle datetime到可读的json格式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。