解决前端参数过多反实例化有误的问题,HttpMessageNotReadableException,UnrecognizedPropertyException

在Java开发过程中,遇到了一个问题,当后台接口用实体接收时,前端参数放入body中传输,当某一个参数在前端数据中存在,而在实体类中不存在,会报异常

接口数据如图

解决前端参数过多反实例化有误的问题,HttpMessageNotReadableException,UnrecognizedPropertyException_第1张图片

接口请求如图

图中“aa”字段就是多余的字段
解决前端参数过多反实例化有误的问题,HttpMessageNotReadableException,UnrecognizedPropertyException_第2张图片

结果

用此种方式请求后,前端会报400,
解决前端参数过多反实例化有误的问题,HttpMessageNotReadableException,UnrecognizedPropertyException_第3张图片
后台会报此字段反实例化有误
在这里插入图片描述

解决方案

方法一:将实体类加入注解JsonIgnoreProperties(ignoreUnknown = true)
在这里插入图片描述
方法二:由于方法一有点麻烦,可以引入配置类即可

@Configuration
public class JacksonConfigurer extends ObjectMapper {

    public JacksonConfigurer() {
        //设置null值不参与序列化(字段不被显示)
//        this.setSerializationInclusion(JsonInclude.Include.NON_NULL);

        // 禁用空对象转换json校验
        this.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
        //设置反序列化时json多余的并在java实体中不存在的字段忽略
        this.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        //驼峰命名法转换为小写加下划线
//        this.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
    }
}

你可能感兴趣的:(java,java)