| | |
| | | package com.ruoyi.framework.config; |
| | | |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.databind.module.SimpleModule; |
| | | import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
| | | import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; |
| | | import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; |
| | | import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; |
| | | import com.ruoyi.framework.jackson.BigNumberSerializer; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.boot.autoconfigure.jackson.JacksonProperties; |
| | | import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.context.annotation.Primary; |
| | | import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.BigInteger; |
| | |
| | | @Configuration |
| | | public class JacksonConfig { |
| | | |
| | | @Primary |
| | | @Bean |
| | | public ObjectMapper getObjectMapper(Jackson2ObjectMapperBuilder builder, JacksonProperties jacksonProperties) { |
| | | ObjectMapper objectMapper = builder.createXmlMapper(false).build(); |
| | | public Jackson2ObjectMapperBuilderCustomizer customizer() { |
| | | return builder -> { |
| | | // 全局配置序列化返回 JSON 处理 |
| | | SimpleModule simpleModule = new SimpleModule(); |
| | | simpleModule.addSerializer(Long.class, BigNumberSerializer.INSTANCE); |
| | | simpleModule.addSerializer(Long.TYPE, BigNumberSerializer.INSTANCE); |
| | | simpleModule.addSerializer(BigInteger.class, BigNumberSerializer.INSTANCE); |
| | | simpleModule.addSerializer(BigDecimal.class, ToStringSerializer.instance); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern(jacksonProperties.getDateFormat()); |
| | | simpleModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter)); |
| | | simpleModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter)); |
| | | objectMapper.registerModule(simpleModule); |
| | | objectMapper.setTimeZone(TimeZone.getDefault()); |
| | | JavaTimeModule javaTimeModule = new JavaTimeModule(); |
| | | javaTimeModule.addSerializer(Long.class, BigNumberSerializer.INSTANCE); |
| | | javaTimeModule.addSerializer(Long.TYPE, BigNumberSerializer.INSTANCE); |
| | | javaTimeModule.addSerializer(BigInteger.class, BigNumberSerializer.INSTANCE); |
| | | javaTimeModule.addSerializer(BigDecimal.class, ToStringSerializer.instance); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter)); |
| | | javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter)); |
| | | builder.modules(javaTimeModule); |
| | | builder.timeZone(TimeZone.getDefault()); |
| | | log.info("初始化 jackson 配置"); |
| | | return objectMapper; |
| | | }; |
| | | } |
| | | |
| | | } |