【问题标题】:Jackson ObjectMapper not respecting configured date time formatJackson ObjectMapper 不遵守配置的日期时间格式
【发布时间】:2018-11-25 03:01:48
【问题描述】:

我很可能遗漏了一些东西,但是,我无法将对象映射器配置为使用给定的日期时间格式。使用相同的日期格式化程序(用于配置对象映射器)解析日期时间字符串会成功解析相同的日期时间字符串。这是相关代码。

    String eventTimeString = "2018-06-13 20:22:00";
    String jsonString = "{\"event_time\":\""+eventTimeString+"\"}";

    // configure date formatter
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

    // configure object mapper
    ObjectMapper mapper = new ObjectMapper();
    mapper.setDateFormat(sdf);

    // parse json string using configured object mapper
    Map<String, Object> jsonDataMap = mapper.readValue(jsonString, new TypeReference<Map<String, Object>>() {});

    // print event time class as parsed by object mapper
    System.out.println("event time class: " + (jsonDataMap.get("event_time").getClass().getName()));

    // test parsing date time field
    System.out.println(sdf.parse(eventTimeString));

我得到的输出是:

event time class: java.lang.String
Thu Jun 14 01:52:00 IST 2018

我在这里做错了什么?

谢谢...

【问题讨论】:

    标签: java data-binding jackson jax-rs objectmapper


    【解决方案1】:

    你错过了一件小事。 您应该将类​​型解析为Map&lt;String, Date&gt; 而不是Map&lt;String, Object&gt;,如下所示:

            Map<String, Date> jsonDataMap = mapper.readValue(jsonString, new TypeReference<Map<String, Date>>() {});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-24
      • 2011-11-23
      • 2014-07-07
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 2023-03-05
      相关资源
      最近更新 更多