Spring MVC接收嵌套List<Pojo>请求时内部字段为null如何解决
问题排查解决方案
优先确认注解包导入正确
@JsonProperty注解需导入com.fasterxml.jackson.annotation.JsonProperty,如果错误导入了fastjson、Gson等其他JSON库的同名注解,Spring MVC默认使用的Jackson不会识别,会导致字段绑定失败。检查ChildPojo字段的命名匹配规则
Jackson默认采用小驼峰命名匹配,会将get/set方法前缀去除后首字母小写作为匹配的JSON键名。如果你的ChildPojo字段定义为First/Second/Third(首字母大写),且请求JSON中对应键名也是首字母大写,需要给每个字段添加@JsonProperty("First")注解显式指定绑定的键名,或者将JSON键名改为小驼峰格式first/second/third即可完成匹配。确认ChildPojo的基础结构符合反序列化要求
- 类必须提供公共无参构造方法:如果自行编写了带参构造方法,Java不会自动生成默认无参构造,Jackson无法实例化对象会导致所有字段赋值为null
- 确认get/set方法命名符合规范:比如字段对应的get方法为
getFirst()、set方法为setFirst(String first),命名错误会导致Jackson无法找到读写入口
核对请求JSON结构是否完全匹配POJO层级
正确的请求体结构参考如下:
{ "ChildPojoExample": [ { "first": "测试值1", "second": "测试值2", "third": "测试值3" } ] }
确认没有多嵌套层级、键名拼写错误、数组结构错误等问题。
- 检查Jackson全局配置是否冲突
如果项目配置了全局Jackson命名策略(例如下划线转驼峰、全小写命名),会覆盖默认的小驼峰匹配规则。可以在application.yml/application.properties中添加配置开启反序列化报错提示,快速定位问题:
spring.jackson.deserialization.fail-on-unknown-properties=true
开启后反序列化出现字段不匹配、结构错误时会直接抛出异常,可通过异常栈定位具体问题点。
内容的提问来源于stack exchange,提问作者arqam
相关产品推荐
相关产品推荐

