【问题标题】:why Jackson only format DateTime(joda time lib) to milliseconds为什么杰克逊只将 DateTime(joda time lib) 格式化为毫秒
【发布时间】:2015-10-05 11:49:41
【问题描述】:

我想使用 Jackson lib 格式的 DateTime joda 到 dd-MM-yyyy'T'HH:mm:ss,但它不起作用。 我在stackoverflow.com 上搜索并找到了问题和答案。我尝试使用很多答案。但它仍然是错误的。

它只格式化为毫秒。

我的pom.xml 文件:

<dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-joda</artifactId>
        <version>2.4.0</version>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.jadira.usertype</groupId>
        <artifactId>usertype.core</artifactId>
        <version>3.2.0.GA</version>
    </dependency>
    <!-- Joda-time hibernate -->
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time-hibernate</artifactId>
        <version>1.4</version>
    </dependency>

User 域中:

@Column(name="date_of_birth")
@NotEmpty   
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime dob;

在配置文件中:

    @Bean
public MappingJackson2HttpMessageConverter converter() {
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    ObjectMapper objectMapper = new ObjectMapper();
    DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy'T'HH:mm:ss");
    objectMapper.setDateFormat(dateFormat);
    objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
//  objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    objectMapper.registerModule(new JodaModule());
    converter.setObjectMapper(objectMapper);

    return converter;
}

【问题讨论】:

  • 请说明什么不起作用。您是否收到异常或只是错误的输出?你用的是什么版本的 Spring?
  • 您好 Ilya Novoseltsev,我的代码没有异常。它只格式化为毫秒

标签: json spring jackson jodatime


【解决方案1】:

我认为您只是缺少以下将其注册到消息转换器的方法:

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(converter());
    }

【讨论】:

  • 你尝试过其他日期对象吗?例如LocalDate 甚至 java.sql.Date? DOB 不需要时间或时区,对吧?
猜你喜欢
  • 2012-12-11
  • 2018-08-27
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 2015-03-06
  • 2016-10-26
  • 1970-01-01
相关资源
最近更新 更多