前言:在我们调用第三方API的时候,大多数都是对数据进行存储的数据库或者直接做一些操作,然而我在开发中遇见最多的就是日期这块的转换,每一个API在日期上提供的都不是很一致,有的是时间戳(0),有的日期(WedDec:25:57CST),有的是字符串(-10-25)而我们不一定需要这种格式,比如比如返回时间戳的我们想要的是日期字符串。我一般都是使用Gson来对json进行处理,但是他也不是很全面,比如对日期的处理,就不能直接说:Gsongson=newGson();Personperson=gson.fromJson(str,Person.class);这样转换实现不了。只能另找出路了(使用GsonBuilder)。我开始演示各种转换1、将时间戳(0)转为日期类型(WedDec:25:57CST)首先定义的实体bean,必须使用Date类型,之后使用JsonDeserializer处理,如图:时间戳转为日期类型2、将日期(WedDec:25:57CST)类型转为时间戳(0)这里多说一句,网上说的如图:网上百度真的不知道测试过没,百度基本上都是这个,我也不知道是我json写错了还是怎么回事,反正我通过这种方式是没实现出来(我的json如下:Stringstr={\name\:\xcc\,\date\:\WedDec:25:57CST\};),如果有人这么实现过,请告诉下我。我的实现方式是重写了一个对象(TimeFormat),构造器传参,重写toString方法。如图:TimeFormat类把Person中的Date改成我写的这个对象Person修改日期转为时间戳3、将时间戳格式化为我们想要的格式如(YYYY-MM-dd)与2的思路一样,重写一个对象,我这里还是以TimeFormat为例,修改下,如图:二次修改TimeFormatPerson时间戳格式化为我们想要的格式总结:以上就是我在日常开发中遇见的问题,有的是API,有的是爬虫,在日期这会有各种形式出现,如果说不通过Gson转换,而是通过把数据下载下来,在for循环去改变,这真是很多余的步骤,数据量少还可以,数据量多也是不小的开销。所以我是从根源上直接去解决这样的问题(懒人没办法)。可能我的这种方式不是很好,因为将json转为实体bean不只有Gson,还有其他的。如果有人有更好的办法,可以分享分享。不胜感激。
转载请注明:http://www.aierlanlan.com/cyrz/6724.html