最近在弄的一个项目,使用了SpringMVC框架,因为与Axis1.4不兼容的问题,没有使用SpringBoot(该问题在SpringBoot项目中不存在)。
在项目碰到了“Jackson with JSON: Unrecognized field, not marked as ignorable”错误。
原因是前台发送的数据中,部分字段在后台POJO中没有定义。SpringMVC使用了ObjectMapper对数据进行转换,但ObjectMapper默认配置会检查对应的字段是否存在,如果不存在就会报错。解决方法有两种:
第一种:
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
第二种:
在POJO对象中加入@JsonIgnoreProperties(ignoreUnknown = true)。
对第二种方法,需要在每个POJO对象中都要加入该注解,修改工作量比较大。
使用第一种方法,ObjectMapper没有提供对应的getter/setter方法,那如何在XML配置中将该选项加入呢?可以使用Spring提供的MethodInvokingFactoryBean。
问题完美解决。