当前位置: 首页 > 知识库问答 >
问题:

LocalDateTime以数组格式表示

杨和蔼
2023-03-14

我使用的是spring boot 2.2.6和Jackson 2.10.3以及Java8。我正在整个项目中使用localdatetime对象。Jackson无法正确解析LocalDateTime(或者可能是它的默认格式),并以如下所示的数组格式在json响应中发送日期

        "createdDate": [
            2020,
            8,
            31,
            0,
            0,
            0,
            80000000
        ]

正如Spring Boot中的JSON Java 8 LocalDateTime格式所描述的,Spring Boot 2已经在类路径上默认了jackson-datatype-jsr310:2.10.3。我希望日期在json中表示为整个项目中的2020-03-31:00。第一个解决方案在上述链接中不起作用。之后,我尝试了@JSONSerialize注释,它起作用了,但我不想应用于每一个类。因此也尝试覆盖对象映射器,但没有工作

@Primary
    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
        SimpleModule module = new SimpleModule("my custom date serializer");
        module.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer());
        mapper.registerModule(module);
        return mapper;
    }
@Bean
    public Jackson2ObjectMapperBuilder objectMapperBuilder() {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
        builder.serializationInclusion(JsonInclude.Include.NON_NULL);
        builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        SimpleModule module = new SimpleModule("my custom date serializer");
        module.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer());
        builder.modulesToInstall(modules)
        return builder;
    }
@Configuration
public class JacksonConfiguration {

    @Primary
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
        return builder -> {
            builder.simpleDateFormat("yyyy-MM-dd HH:mm:ss");
            builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        };
    }
}
@RestConroller
@RequestMapping("/user")
UserController {

    User getUser(){
        User user = new User()
        user.createdDate = LocalDateTime.now();
        return user;
    }

}

是否有什么我可以做的全局级别,所以项目中的每个日期将序列化为字符串格式,如2020-09-01?

任何建议都会有帮助。

共有1个答案

程昕
2023-03-14

罪魁祸首是@enablewebmvc。我的一个cors类有@enablewebmvc注释。这是在禁用Spring Boot自动配置,并覆盖映射器配置。这不会让您覆盖对象映射器的配置。通过删除@enableMvc注释,现在可以正常工作了。在SpringBoot2中,我们不需要做任何与日期序列化显式相关的配置,它会自动解析“YYYY-MM-DD”格式的java 8日期。

 类似资料:
  • 问题内容: 我有这种格式的json数组: 现在,我想解析并以表格格式在Javascript或jQuery中显示它。该表有四列,每一列指示此数组中每个元素的每个属性。该表的第一行是这四个键的名称。其他行是这些键的值。 我不知道如何编写JavaScript代码来实现此功能。你能帮我吗? 问题答案: 演示

  • 将 LocalDateTime 转换为 LocalDateTime(以 UTC 为单位)。 我在网上搜索。但没有找到解决方案

  • 对于Application.Property,我的模型类如下所示: 我是这样设定时间的: 我添加了依赖项: 我没有尝试类的解决方案,因为我不知道应该把它们放进什么包中。//按照Erik的建议进行编辑,pom.xml如下所示: 升级不起作用。JSON: 帐簿租金:

  • 本文向大家介绍如何将Java LocalDateTime格式化为ISO_DATE_TIME格式,包括了如何将Java LocalDateTime格式化为ISO_DATE_TIME格式的使用技巧和注意事项,需要的朋友参考一下 首先,设置日期: 现在,将日期时间格式化为ISO_DATE_TIME格式: 示例 输出结果

  • 问题内容: 如何利用System.out.print(ln/f)一种方式将我的输出格式化为表格? 如果要使用printf,我应该指定哪种格式来获得以下结果? 我要打印的示例表: ``` n result1 result2 time1 time2 5 1000.00 20000.0 1000ms 1250ms 5 1000.00 20000.0 1000ms 1250ms 5 1000.00 200

  • 问题内容: 如何以矩阵框格式打印出简单的int [] [],就像我们在其中手写矩阵的格式那样。简单的循环运行显然无效。如果有帮助,我正在尝试在linux ssh终端中编译此代码。 问题答案: 产生: