java反序列化时区,设置日期反序列化的杰克逊时区

我使用杰克逊1.9.7并没有不利的影响,我发现,这样做以下并没有解决我的序列化/ des erialization时区的问题:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZ");

dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

objectMapper.setDateFormat(dateFormat);

而不是 “2014-02-13T20:09:09.859Z” 我知道 “2014-02-13T08:09:09.859 + 0000” 的JSON消息是显然是不正确。我没有时间通过​​Jackson库源代码来弄清楚为什么发生这种情况,但是我发现如果我只是指定Jackson为ObjectMapper.setDateFormat方法提供了ISO8601DateFormat类,那么日期是正确的。

除了这不把毫秒的格式,这是我想要的所以我分类ISO8601DateFormat类和overrode的方法format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) 方法。

/**

* Provides a ISO8601 date format implementation that includes milliseconds

*

*/

public class ISO8601DateFormatWithMillis extends ISO8601DateFormat {

/**

* For serialization

*/

private static final long serialVersionUID = 2672976499021731672L;

@Override

public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)

{

String value = ISO8601Utils.format(date, true);

toAppendTo.append(value);

return toAppendTo;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值