fastjson反序列化ZonedDateTime格式的时间

这篇博客介绍了如何使用Fastjson进行JavaBean、List、Map等类型的反序列化,并特别提到Fastjson处理ZonedDateTime格式时间时的注意事项,包括设置默认日期格式避免报错的方法。

1. JavaBean

      Person person = JSON.parseObject(jsonString, Person.class);

2. List<JavaBean>

      List<Person> listPerson =JSON.parseArray(jsonString, Person.class);

3. List<String>

      List<String> listString = JSON.parseArray(jsonString, String.class);

4. List<Map<String,Object>>

      List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});  (注意:此处可看出fastjson反射机制比gson更准确, id = 1001 通过fastjson反射仍是 id = 1001 , 而通过gson反射结果 为 id =1001.0 ;


另外,如果fastjson反序列化时间时,如果时间是ZonedDateTime的格式,会报错。处理方式如下:

JSONObject.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.mmm";

ModuleDTO moduleDto = JSONObject.parseObject(object.toJSONString(), ModuleDTO.class);

如果是数组:

JSONArray.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.mmm";

List<Device> devices = JSONArray.parseArray(object.toJSONString(), Device.class);

应该也可以用JOSN代替JSONObject和JSONArray。

Fastjson可以自动识别多种日期格式进行反序列化。其中包括ISO-8601日期格式(例如yyyy-MM-dd、yyyy-MM-dd HH:mm:ss、yyyy-MM-dd HH:mm:ss.SSS)、毫秒数字、毫秒数字字符串以及.NET JSON日期格式(例如new Date(1982932381111))。[1] 在使用Fastjson进行反序列化时,可以通过设置SerializerFeature.UseISO8601DateFormat来将日期序列化为ISO-8601日期格式。例如,可以使用以下代码将日期序列化为ISO-8601日期格式: ``` Ao ao = new Ao(); ao.setId(1); ao.setDate(new Date()); Ao aos1 = JSON.parseObject(JSON.toJSONString(ao, SerializerFeature.UseISO8601DateFormat), Ao.class); ``` [2] 除了使用SerializerFeature.UseISO8601DateFormat,还可以使用其他方法来指定日期的序列化格式。例如,可以使用JSON.toJSONStringWithDateFormat方法来指定日期的格式: ``` Ao ao = new Ao(); ao.setId(1); ao.setDate(new Date()); String json = JSON.toJSONStringWithDateFormat(ao, "yyyy-MM-dd HH:mm:ss.SSS"); ``` [3] 另外,还可以通过修改全局的日期格式来设置默认的日期格式。例如,可以使用以下代码将全局的日期格式修改为"yyyy-MM-dd": ``` JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd"; ``` 然后,可以使用SerializerFeature.WriteDateUseDateFormat来使用默认的全局日期格式进行序列化: ``` Ao ao = new Ao(); ao.setId(1); ao.setDate(new Date()); String json = JSON.toJSONString(ao, SerializerFeature.WriteDateUseDateFormat); ``` 总之,Fastjson提供了多种方式来反序列化时间格式,包括自动识别多种日期格式、指定日期格式以及修改全局的日期格式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值