python – jsonpickle datetime到可读的json格式

python – jsonpickle datetime到可读的json格式,第1张

概述是否可以将datetime转换为可读的 JSON格式(可以从javascript使用)?目前jsonpickle仅为datetime提供二进制编码值. 这里有几个陷阱: 首先,请不要在时区中流量不知道日期时间对象.你会感到痛苦,不是今天,也许不是明天,而是某一天.你可以从别人的错误中学习(我的),或者你可以学到很多困难.据我所知,Python允许你在没有时区的情况下制作日期时间对象是一个错误. 第 是否可以将datetime转换为可读的 JSON格式(可以从JavaScript使用)?目前Jsonpickle仅为datetime提供二进制编码值.解决方法 这里有几个陷阱:

首先,请不要在时区中流量不知道日期时间对象.你会感到痛苦,不是今天,也许不是明天,而是某一天.你可以从别人的错误中学习(我的),或者你可以学到很多困难.据我所知,Python允许你在没有时区的情况下制作日期时间对象是一个错误.

第二,strptime不处理时区!所以你做了正确的事情,然后你以某种格式写了你的日期,并想把它读回来,并且kablooey,你得到’%z格式错误的字符串’.格儿.

使用iso8601库来解析ISO8601日期时间字符串.时区处理.

第三,Jsonpickle没有清楚地记录如何滚动你自己的DatetimeHandler.所以,是的,你只是想要一些易读的东西,你发送到Javascript或其他什么?上面的解决方案没问题.你想要的东西是清晰的,但你也想在某些时候把它拉回到Python中?嗯,比较棘手.

这里有一个提示:当您继承库以扩展其功能时,请仔细查看您正在扩展的超类.

我会以不同的方式编写DatetimeHandler.但是下面的作品,包含了我在这个主题上所有来之不易的智慧.哎哟.

import pytzimport Jsonpickleimport iso8601from datetime import datetimeclass 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 valueJsonpickle.handlers.registry.register(datetime,DatePickleISO8601)
总结

以上是内存溢出为你收集整理的python – jsonpickle datetime到可读的json格式全部内容,希望文章能够帮你解决python – jsonpickle datetime到可读的json格式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1192948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存