We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency>
基础类型long处理在Long.MAX 的长度内都能正确处理反序列化,出现超出大小后报错,但超过长度会静默处理溢出(初步判断是这样的,极少的情况发现会报错,暂时没摸清这里的原因,按照以下我的测试记录可复现),导致接收数据出问题,经测试,包装类型Long,基础类型int,包装类型Integer均无此问题,只有基础类型long存在该现象
测试类
@Data public class Test implements Serializable { private LocalDate localDate; private LocalDateTime createTime; private Date date; private Long longClassType; private long longType; private Integer integerType; private int intType; private String str; }
Controller
@RestController @RequestMapping("/test") public class TestController{ @PostMapping public Test queryDate(@RequestBody Test test) { System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE); System.out.println(Long.MAX_VALUE); System.out.println(Long.MIN_VALUE); return test; } }
FastJsonHttpMessageConverter 注册
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(stringHttpMessageConverter()); converters.add(fastJsonHttpMessageConverter()); converters.add(xmlHttpMessageConverter()); WebMvcConfigurer.super.configureMessageConverters(converters); } @Bean public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() { FastJsonHttpMessageConverter customFastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); // ParserConfig parserConfig = new ParserConfig(); // parserConfig.putDeserializer(Long.class, CustomeLongCodec.instance); // parserConfig.putDeserializer(long.class, CustomeLongCodec.instance); // parserConfig.putDeserializer(Integer.class, CustomeIntegerCodec.instance); // parserConfig.putDeserializer(int.class, CustomeIntegerCodec.instance); // fastJsonConfig.setParserConfig(parserConfig); fastJsonConfig.setSerializerFeatures( //日期格式化 SerializerFeature.WriteDateUseDateFormat, SerializerFeature.DisableCircularReferenceDetect); List<MediaType> mediaTypeList = new ArrayList<>(); mediaTypeList.add(MediaType.APPLICATION_JSON); mediaTypeList.add(MediaType.APPLICATION_JSON_UTF8); customFastJsonHttpMessageConverter.setSupportedMediaTypes(mediaTypeList); customFastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig); return customFastJsonHttpMessageConverter; } @Bean public StringHttpMessageConverter stringHttpMessageConverter() { StringHttpMessageConverter httpMessageConverter = new StringHttpMessageConverter(); httpMessageConverter.setDefaultCharset(Charset.defaultCharset()); return httpMessageConverter; } @Bean public MappingJackson2XmlHttpMessageConverter xmlHttpMessageConverter() { MappingJackson2XmlHttpMessageConverter xmlHttpMessageConverter = new MappingJackson2XmlHttpMessageConverter(); List<MediaType> mediaTypeList = new ArrayList<>(); mediaTypeList.add(MediaType.TEXT_XML); xmlHttpMessageConverter.setSupportedMediaTypes(mediaTypeList); return xmlHttpMessageConverter; } }
http请求体数据
{"localDate":"2024-02-01","createTime":"2024-02-01 12:22:22","longClassType": "123","longType":922337203685477580899,"integerType":"123","intType":123}
The text was updated successfully, but these errors were encountered:
No branches or pull requests
版本
Debug过程
基础类型long处理在Long.MAX 的长度内都能正确处理反序列化,出现超出大小后报错,但超过长度会静默处理溢出(初步判断是这样的,极少的情况发现会报错,暂时没摸清这里的原因,按照以下我的测试记录可复现),导致接收数据出问题,经测试,包装类型Long,基础类型int,包装类型Integer均无此问题,只有基础类型long存在该现象
相关代码
测试类
Controller
FastJsonHttpMessageConverter 注册
http请求体数据
The text was updated successfully, but these errors were encountered: