在用map接受前端数据时,转换为Long类型报错解决办法

博客主要讲述Java中前端数据格式转换的问题。前端数据为json格式,当本地接收类型与前端传输类型不一致,如前端传Integer本地需Long时,直接显示声明会报错。之后又考虑前端传字符串的情况,最终选择全转换成字符串再转对应类型来解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端数据是使用的json格式
因为一个map需要接收多种类型的数据
所以使用的是

@RequestBody Map<String, Object> param

当前端数据传输为Integer类型而本地需要接收的类型为Long
最初尝试直接使用(Long)显示声明(不管是不是封装类)
但是仍然会报错

java.lang.Integer cannot be cast to java.lang.Long

解决办法:

//param为接收参数用的map
Long.valueOf((int) param.get("userId"))

但是啊,后来又遇到问题了,前端传的是字符串怎么办啊
单独写个对字符串的判断吗?
程序员都是懒人,我格外懒,我选择
全转换成字符串,然后转换为对应类型

@Bean public HttpMessageConverters fastJsonHttpMessageConverters() { // 创建一个FastJsonHttpMessageConverter实例,用于JSON数据转换 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); // 创建并配置一个FastJsonConfig实例,用于定制JSON数据的处理规则 FastJsonConfig fastJsonConfig = new FastJsonConfig(); // 设置JSON数据的序列化特性,此处为格式化输出,提高可读性 fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // 获取全局的序列化配置实例 SerializeConfig serializeConfig = SerializeConfig.globalInstance; // 将BigInteger、Long转为String类型 serializeConfig.put(BigInteger.class, ToStringSerializer.instance); serializeConfig.put(Long.class, ToStringSerializer.instance); serializeConfig.put(Long.TYPE, ToStringSerializer.instance); // 配置LocalDateTime类型数据转换为字符串类型,以适应JSON格式 serializeConfig.put(LocalDateTime.class, ToStringSerializer.instance); // 将自定义的序列化配置应用到FastJsonConfig中 fastJsonConfig.setSerializeConfig(serializeConfig); // 将配置好的FastJsonConfig应用到FastJsonHttpMessageConverter中 fastConverter.setFastJsonConfig(fastJsonConfig); // 返回包含配置好的FastJsonHttpMessageConverter的HttpMessageConverters return new HttpMessageConverters(fastConverter); }为什么我不配置以上的消息转换 @PostMapping("test") public void test(@RequestBody Map deviceReported){ System.out.println("map = " + deviceReported); }这个接口调用会出现2025-03-29 18:07:30.897 WARN 17460 --- [ XNIO-1 task-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported] 2025-03-29 18:07:30.905 WARN 17460 --- [ XNIO-1 task-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class java.util.LinkedHashMap]这个问题
最新发布
03-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值