关于@RequestBody 不存在属性问题: Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException

关于json@RequestBody 不存在属性导致问题

问题:调接口时候发现接口没有bean的属性参数导致JSON转换出错,如下图:
在这里插入图片描述

发现

在这里插入图片描述
排查如下:
首先发现
1.RefundCommonModifyApplyReq这个类的确没有存在属性:showCommissionOption;
2.首页原来售后接口没有发现该问题;
问题定位:
1.前端的确多传了属性;
2.admin接口没有忽略或过滤多传的属性导致出错;

问题处理:
1.原来前端没有这个属性去掉;
2.后端框架加上配置过滤到在注入bean的时候自动忽略不存在的属性,如下:
添加类:
在这里插入图片描述

package com.yunji.customerservice.admin.util;
 
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.stereotype.Component;
 
/**
 * @Auther: csh
 * @Date: 2020/4/29 15:02
 * @Description:
 */
@Component("jacksonObjectMapper")
public class JacksonObjectMapper extends ObjectMapper {
    public JacksonObjectMapper() {
        this.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    }
}

在这里插入图片描述
在这里插入图片描述

<!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射 -->
<mvc:annotation-driven>
   <mvc:message-converters>
      <bean class="org.springframework.http.converter.StringHttpMessageConverter">
         <property name="supportedMediaTypes">
            <list>
               <value>text/plain;charset=UTF-8</value>
               <value>text/html;charset=UTF-8</value>
            </list>
         </property>
      </bean>
      <ref bean="jacksonObjectMapper"/>
   </mvc:message-converters>
</mvc:annotation-driven>
<bean id="jacksonObjectMapper" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
      <property name="objectMapper" ref="objectMapper" />
</bean>
 
<bean id="objectMapper" class="com.yunji.customerservice.admin.util.JacksonObjectMapper" />

解释一下为啥要后端来做过滤,不前端直接去掉属性就可以了,因为在日常开发过程中,可能会存在前端多传属性的场景,如果因为多传就导致接口不通或失败,这个是不合理的,所以必须后端做一些过滤,否则可能会影响整体对接速度和可能会出现各种问题;

有更好方案的大神请提出建议,感谢!~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值