场景描述:原来请求是可达的,后来由于业务需求,在请求的字段里增加了一个标记位,仅作为标记使用,不在@requestBody后紧跟的对象的属性字段中。
原因分析:
- 检查JSON格式数据是否正确,错误的格式是不能被正确mapping的,可以在浏览器中搜索json在线工具进行校验。
- json中的参数字段一定要在@requestBody后紧跟的对象的属性字段中也存在,也就是json中发送的字段只能比目标对象少,不能比目标对象多,少了会自动转为null,多了则会转换报错。
- 目标类属性命名不规范,第一个字母大写,发送的JSON数据会被转为小写,无法与目标类匹配。
解决方案:
- 查看json发送的字段,是否必要。
- 新建目标对象,包含当前的目标对象和json多余的字段。
- 不使用@requestBody,取到json的字符串后手动解析字段。
- 在目标类上加注解@JsonIgnorePropertie或配置jsonMappingConvert类。参考这篇博客