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

Spring Boot中如何忽略父类AuthToken映射JSON到Java POJO类

嵌套JSON映射到忽略父节点的Java POJO

需求说明

需要将以下嵌套JSON映射到TokenAccessResponseDTO类,忽略外层的AuthToken父节点,仅提取其中的token字段:

原始JSON

{
  "AuthToken" : 
  {
    "id" : "1",
    "token" : "abcde1234xyz",
    "extendSession" : null
  } 
}

现有POJO类

public class TokenAccessResponseDTO {

    private String token;

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

}

解决方案(以Jackson为例)

默认映射逻辑无法直接找到token字段(它处于AuthToken子节点下),可以通过以下两种方式实现需求:

方案1:修改POJO添加注解

给token字段添加@JsonProperty注解,指定其在JSON中的完整路径,让Jackson直接定位到目标字段:

import com.fasterxml.jackson.annotation.JsonProperty;

public class TokenAccessResponseDTO {

    @JsonProperty("AuthToken.token")
    private String token;

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

}

方案2:通过ObjectMapper手动解析节点

如果不想修改POJO结构,可以先解析JSON树,定位到AuthToken节点后再映射到DTO:

import com.fasterxml.jackson.databind.ObjectMapper;

public class Demo {
    public static void main(String[] args) throws Exception {
        String json = "{\"AuthToken\":{\"id\":\"1\",\"token\":\"abcde1234xyz\",\"extendSession\":null}}";
        
        ObjectMapper mapper = new ObjectMapper();
        TokenAccessResponseDTO dto = mapper.readTree(json)
                .get("AuthToken")
                .traverse()
                .readValueAs(TokenAccessResponseDTO.class);
        
        System.out.println(dto.getToken()); // 输出abcde1234xyz
    }
}

补充说明

如果使用Gson库,也可以通过自定义TypeAdapter或解析JSON树提取字段的方式实现相同效果;修改POJO添加注解的方式更简洁,适合固定结构的JSON场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:55:16