美文网首页
关于springboot里面的json格式化问题

关于springboot里面的json格式化问题

作者: virtual灬zzZ | 来源:发表于2021-10-22 23:40 被阅读0次

对于json全局化,类似日期格式化这方面的需求,可以定义一个全局的类来配置。

@Configuration
public class JacksonConfig {

    public static final String PATTERN = "yyyy-MM-dd HH:mm:ss";

    @Primary
    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        // 设置时区
        objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));

        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);

        objectMapper.enable(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN);

        // 设置时间格式
        objectMapper.setDateFormat(new SimpleDateFormat(PATTERN));

        JavaTimeModule javaTimeModule = new JavaTimeModule();
        // 序列化配置,针对java8 时间
        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));

        //反序列化配置,针对java8 时间
        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));

        //注册模块
        objectMapper
                .registerModule(javaTimeModule)
                .registerModule(new Jdk8Module())
                .registerModule(new ParameterNamesModule());
        return objectMapper;
    }
}

这里无论是Date 或者 LocalDatetime 都是格式化成 yyyy-MM-dd HH:mm:ss ,如果有特别的需求,可以在那个类中的那个字段,单独配置上

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss ")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private LocalDateTime time;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss ")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date date;

{
  "code": "provider-a test getBean return",
  "age": 19,
  "favor": [
    "ff",
    "kk"
  ],
  "time": "2021-02-02 12:12",
  "date": "2022-02-02"
}

相关文章

网友评论

      本文标题:关于springboot里面的json格式化问题

      本文链接:https://www.haomeiwen.com/subject/tpxkaltx.html