Commit 09872bd0b04348e253de493df15beedbe82afccb
1 parent
1b75a5c0
Long转json精度丢失的配置 未生效
Showing
1 changed file
with
16 additions
and
12 deletions
jeecg-boot/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java
1 | package org.jeecg.config; | 1 | package org.jeecg.config; |
2 | 2 | ||
3 | +import com.fasterxml.jackson.databind.DeserializationFeature; | ||
3 | import com.fasterxml.jackson.databind.ObjectMapper; | 4 | import com.fasterxml.jackson.databind.ObjectMapper; |
4 | import com.fasterxml.jackson.databind.module.SimpleModule; | 5 | import com.fasterxml.jackson.databind.module.SimpleModule; |
5 | import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; | 6 | import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
6 | import org.springframework.beans.factory.annotation.Value; | 7 | import org.springframework.beans.factory.annotation.Value; |
7 | import org.springframework.boot.actuate.trace.http.InMemoryHttpTraceRepository; | 8 | import org.springframework.boot.actuate.trace.http.InMemoryHttpTraceRepository; |
9 | +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; | ||
8 | import org.springframework.context.annotation.Bean; | 10 | import org.springframework.context.annotation.Bean; |
9 | import org.springframework.context.annotation.Conditional; | 11 | import org.springframework.context.annotation.Conditional; |
10 | import org.springframework.context.annotation.Configuration; | 12 | import org.springframework.context.annotation.Configuration; |
11 | -import org.springframework.http.converter.HttpMessageConverter; | ||
12 | -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; | 13 | +import org.springframework.context.annotation.Primary; |
14 | +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; | ||
13 | import org.springframework.web.cors.CorsConfiguration; | 15 | import org.springframework.web.cors.CorsConfiguration; |
14 | import org.springframework.web.cors.UrlBasedCorsConfigurationSource; | 16 | import org.springframework.web.cors.UrlBasedCorsConfigurationSource; |
15 | import org.springframework.web.filter.CorsFilter; | 17 | import org.springframework.web.filter.CorsFilter; |
@@ -17,8 +19,6 @@ import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry | @@ -17,8 +19,6 @@ import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry | ||
17 | import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; | 19 | import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; |
18 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | 20 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; |
19 | 21 | ||
20 | -import java.util.List; | ||
21 | - | ||
22 | /** | 22 | /** |
23 | * Spring Boot 2.0 解决跨域问题 | 23 | * Spring Boot 2.0 解决跨域问题 |
24 | * | 24 | * |
@@ -71,20 +71,24 @@ public class WebMvcConfiguration implements WebMvcConfigurer { | @@ -71,20 +71,24 @@ public class WebMvcConfiguration implements WebMvcConfigurer { | ||
71 | return new CorsFilter(urlBasedCorsConfigurationSource); | 71 | return new CorsFilter(urlBasedCorsConfigurationSource); |
72 | } | 72 | } |
73 | 73 | ||
74 | + | ||
74 | /** | 75 | /** |
75 | - * 添加Long转json精度丢失的配置 | ||
76 | - * @Return: void | ||
77 | - */ | ||
78 | - @Override | ||
79 | - public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { | ||
80 | - MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); | 76 | + * 序列换成json时,将所有的long变成string |
77 | + * js中long过长精度丢失 | ||
78 | + */ | ||
79 | + @Bean | ||
80 | + @Primary | ||
81 | + @ConditionalOnMissingBean(ObjectMapper.class) | ||
82 | + public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { | ||
81 | ObjectMapper objectMapper = new ObjectMapper(); | 83 | ObjectMapper objectMapper = new ObjectMapper(); |
82 | SimpleModule simpleModule = new SimpleModule(); | 84 | SimpleModule simpleModule = new SimpleModule(); |
85 | + //忽略在json字符串中存在,在java类中不存在字段,防止错误。 | ||
86 | + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); | ||
87 | + objectMapper.configure(DeserializationFeature.READ_ENUMS_USING_TO_STRING, true); | ||
83 | simpleModule.addSerializer(Long.class, ToStringSerializer.instance); | 88 | simpleModule.addSerializer(Long.class, ToStringSerializer.instance); |
84 | simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); | 89 | simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); |
85 | objectMapper.registerModule(simpleModule); | 90 | objectMapper.registerModule(simpleModule); |
86 | - jackson2HttpMessageConverter.setObjectMapper(objectMapper); | ||
87 | - converters.add(jackson2HttpMessageConverter); | 91 | + return objectMapper; |
88 | } | 92 | } |
89 | 93 | ||
90 | /** | 94 | /** |