如何使用Jackson反序列化JS日期?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (287)

我从ExtJS中获取格式如下的日期字符串:

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

当我尝试反序列化这个日期时,它将时区更改为印度标准时间(将时间加上+5:30)。这是我如何反序列化日期:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
getObjectMapper().getDeserializationConfig().setDateFormat(dateFormat);

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

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
getObjectMapper().getDeserializationConfig().setDateFormat(dateFormat);

如何将日期反序列化?

提问于
用户回答回答于

有没有一种方法可以在创建ObjectMapper时指定格式?

以下是我所做的:

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);
        }

    }

}

并用以下注释每个Date字段的setter方法:

@JsonDeserialize(using = CustomJsonDateDeserializer.class)
用户回答回答于

这适用于:

ObjectMapper objectMapper = new ObjectMapper();
final DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
objectMapper.setDateFormat(df);

所属标签

可能回答问题的人

  • Hanzo

    2 粉丝0 提问5 回答
  • software

    10 粉丝488 提问3 回答
  • Richel

    9 粉丝0 提问3 回答
  • 不吃貓的鱼oo

    6 粉丝466 提问2 回答

扫码关注云+社区

领取腾讯云代金券