首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Jackson反序列化JS date?

如何使用Jackson反序列化JS date?
EN

Stack Overflow用户
提问于 2011-04-08 15:38:12
回答 5查看 137.5K关注 0票数 73

我从ExtJS获得了一个日期字符串,格式如下:

"2011-04-08T09:00:00“

当我尝试反序列化此日期时,它将时区更改为印度标准时间(将时间增加+5:30 )。下面是我反序列化日期的方法:

代码语言:javascript
复制
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
getObjectMapper().getDeserializationConfig().setDateFormat(dateFormat);

这样做也不会更改时区。我仍然可以在IST中获得日期:

代码语言:javascript
复制
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
getObjectMapper().getDeserializationConfig().setDateFormat(dateFormat);

我如何在没有时区的麻烦的情况下反序列化日期?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-09 00:48:50

我找到了一个解决办法,但我需要在整个项目中注释每个日期的setter。有没有一种方法可以在创建ObjectMapper时指定格式?

下面是我所做的:

代码语言:javascript
复制
public class CustomJsonDateDeserializer extends JsonDeserializer<Date>
{
    @Override
    public Date deserialize(JsonParser jsonParser,
            DeserializationContext deserializationContext) throws IOException, JsonProcessingException {

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
        String date = jsonParser.getText();
        try {
            return format.parse(date);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }

    }

}

并使用下面的代码注释每个日期字段的setter方法:

代码语言:javascript
复制
@JsonDeserialize(using = CustomJsonDateDeserializer.class)
票数 141
EN

Stack Overflow用户

发布于 2012-08-31 23:58:46

这对我很有效--我使用的是jackson 2.0.4

代码语言:javascript
复制
ObjectMapper objectMapper = new ObjectMapper();
final DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
objectMapper.setDateFormat(df);
票数 58
EN

Stack Overflow用户

发布于 2016-09-15 02:44:08

关于这个话题有一个很好的博客:http://www.baeldung.com/jackson-serialize-dates使用@JsonFormat看起来是最简单的方式。

代码语言:javascript
复制
public class Event {
    public String name;

    @JsonFormat
      (shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss")
    public Date eventDate;
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5591967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档