fix:long类型导致的js精度丢失

This commit is contained in:
sugus 2025-07-30 14:55:43 +08:00
parent 6c6af0a191
commit 6ee0b182ee
2 changed files with 2 additions and 77 deletions

View File

@ -1,76 +0,0 @@
package com.aircraft.config;
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.databind.deser.std.DateDeserializers;
import com.fasterxml.jackson.databind.ser.std.DateSerializer;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.text.DateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
/**
* Author sjc
* Date 2024/7/30 15:44
*/
@Configuration
@Slf4j
public class JacksonConfig {
/**
* DateTime格式化字符串
*/
private static final String DEFAULT_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
/**
* Date格式化字符串
*/
private static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
/**
* Time格式化字符串
*/
private static final String DEFAULT_TIME_PATTERN = "HH:mm:ss";
private static final String DEFAULT_TIME_ZONE = "GMT+8";
/**
* Jackson序列化和反序列化转换器用于转换Post请求体中的json以及将对象序列化为返回响应的json
*/
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
DateFormat dateTimeDf = DateUtil.newSimpleFormat(DEFAULT_DATETIME_PATTERN, Locale.CHINA, TimeZone.getTimeZone(DEFAULT_TIME_ZONE));
DateTimeFormatter dateTimeDtf = DateTimeFormatter.ofPattern(DEFAULT_DATETIME_PATTERN).withZone(ZoneId.of(DEFAULT_TIME_ZONE));
DateTimeFormatter dateDtf = DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN).withZone(ZoneId.of(DEFAULT_TIME_ZONE));
DateTimeFormatter timeDtf = DateTimeFormatter.ofPattern(DEFAULT_TIME_PATTERN).withZone(ZoneId.of(DEFAULT_TIME_ZONE));
return builder -> builder
.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeDtf))
.serializerByType(LocalDate.class, new LocalDateSerializer(dateDtf))
.serializerByType(LocalTime.class, new LocalTimeSerializer(timeDtf))
.serializerByType(Date.class, new DateSerializer(false, dateTimeDf))
.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeDtf))
.deserializerByType(LocalDate.class, new LocalDateDeserializer(dateDtf))
.deserializerByType(LocalTime.class, new LocalTimeDeserializer(timeDtf))
.deserializerByType(Date.class, new DateDeserializers.DateDeserializer(DateDeserializers.DateDeserializer.instance, dateTimeDf, DEFAULT_DATETIME_PATTERN))
.serializerByType(Long.TYPE, ToStringSerializer.instance)
.serializerByType(Long.class, ToStringSerializer.instance);
}
}

View File

@ -86,7 +86,8 @@ public class ConfigurerAdapter implements WebMvcConfigurer {
// 开启引用检测枚举支持
config.setWriterFeatures(
JSONWriter.Feature.WriteEnumUsingToString,
JSONWriter.Feature.ReferenceDetection
JSONWriter.Feature.ReferenceDetection,
JSONWriter.Feature.WriteLongAsString
);
fastJsonConverter.setFastJsonConfig(config);
fastJsonConverter.setSupportedMediaTypes(supportMediaTypeList);