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

将嵌套JSON对象转换为POJO时返回Null的问题排查与解决

解决Jackson映射JSON到POJO时字段返回null的问题

你的问题主要由三个原因导致,逐一修正即可解决:

1. Getter方法笔误

Input类的getEnvironment()方法返回的是未定义的apolloEnvironment,但私有字段实际是environment,这直接导致获取不到字段值。

2. POJO缺少必要的构造方法和Setter

Jackson默认需要POJO具备无参构造方法和Setter方法来完成属性注入,原类中缺少这两部分,导致无法正确赋值。

3. JSON节点映射错误

原始JSON的结构是根节点包含operation和input字段,如果你传入的inputJson是整个根节点的JsonNode,直接映射到Input类会找不到对应字段——因为Input类的字段对应根节点下的input子节点,而非根节点本身。


修正后的Input类

@JsonIgnoreProperties(ignoreUnknown = true)
public class Input {
    private String environment;
    private String stage;

    // 添加Jackson必需的无参构造方法
    public Input() {}

    public String getEnvironment() {
        // 修正笔误,返回正确的私有字段
        return environment;
    }

    public String getStage() {
        return stage;
    }

    // 添加Setter方法用于Jackson属性注入
    public void setEnvironment(String environment) {
        this.environment = environment;
    }

    public void setStage(String stage) {
        this.stage = stage;
    }
}

修正后的映射代码

// 假设inputJson是整个根节点的JsonNode实例
JsonNode rootNode = inputJson;
// 先提取根节点下的input子节点
JsonNode inputNode = rootNode.get("input");
// 用input子节点映射到Input类
Input myInput = OBJECT_MAPPER.treeToValue(inputNode, Input.class);

System.out.println(myInput.getEnvironment()); // 输出 myEnv
System.out.println(myInput.getStage()); // 输出 beta

如果你的inputJson已经是JSON中input对应的子节点,那么只需要修正Input类的笔误和补充构造/Setter方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:15:32