You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring中JSON请求创建嵌套实体时子实体返回null的问题

我之前也碰到过一模一样的问题!这种嵌套实体解析为空的情况,大概率是序列化/反序列化环节出了问题,咱们一步步排查:

1. 检查实体类字段与JSON请求字段的匹配度

如果你的Parent类里Child属性叫child,那请求JSON里必须对应"child": {...};如果JSON里的字段名和实体类属性名不一致(比如JSON是"kid"但实体类是child),一定要用@JsonProperty注解指定映射关系:

public class Parent {
    // 映射JSON里的"kid"字段到当前属性
    @JsonProperty("kid")
    private Child child;

    // 必须保证getter/setter方法正确
    public Child getChild() {
        return child;
    }

    public void setChild(Child child) {
        this.child = child;
    }
}

2. 确保实体类有合法的Getter/Setter与无参构造

很多时候是漏了给Child属性生成setter,或者IDE自动生成的方法名不符合JavaBean规范(比如属性是child但方法是getKid())。另外,嵌套的Child类必须要有无参构造——Jackson这类JSON框架默认靠无参构造实例化对象:

public class Child {
    private String name;

    // 无参构造必须存在
    public Child() {}

    // 带参构造可选,但不影响解析
    public Child(String name) {
        this.name = name;
    }

    // 正确的getter/setter
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

3. 验证请求JSON的格式合法性

确保POST请求的Body是标准嵌套JSON,没有语法错误:

{
    "parentName": "老王",
    "child": {
        "childName": "小王"
    }
}

如果JSON里的child字段缺失、值为null,或者嵌套结构写错(比如少了大括号),解析后自然会得到null。

4. 确认控制器的@RequestBody注解使用正确

一定要在控制器方法的Parent参数上标注@RequestBody,否则Spring会把参数当成URL请求参数解析,而非从请求Body读取JSON:

@RestController
@RequestMapping("/parents")
public class ParentController {

    @PostMapping
    public ResponseEntity<Parent> createParent(@RequestBody Parent parent) {
        if (parent.getChild() == null) {
            throw new IllegalArgumentException("子实体不能为空");
        }
        // 后续关联保存逻辑
        return ResponseEntity.ok(parent);
    }
}

5. 排查自定义Jackson配置(如果有)

如果项目里自定义了ObjectMapper,别不小心禁用了自动字段映射:

@Bean
public ObjectMapper objectMapper() {
    ObjectMapper mapper = new ObjectMapper();
    // 避免这种会阻断自动映射的配置
    // mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.NONE);
    return mapper;
}

你可以按这个顺序逐一排查,一般前三点就能解决问题。要是还不行,把你的实体类完整代码和请求JSON贴出来,我再帮你细瞅!

内容的提问来源于stack exchange,提问作者PLZhalp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:04:48