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

如何将RestTemplate调用API返回的JSON映射为POJO?

将JSON响应映射为POJO的实现方案

1. 定义对应JSON结构的POJO类

根据你提供的JSON层级,需要创建三个嵌套POJO类来匹配数据结构:

底层实体类(对应individuals数组元素)

import com.fasterxml.jackson.annotation.JsonProperty;

public class Individual {
    @JsonProperty("cust_xref_id")
    private String custXrefId;
    
    @JsonProperty("cust_frd_alrt_in")
    private String custFrdAlrtIn;
    
    @JsonProperty("cust_satis_trd_ct")
    private String custSatisTrdCt;
    
    @JsonProperty("gam_open_rv_trd_ct")
    private String gamOpenRvTrdCt;
    
    @JsonProperty("cust_extnl_delinq_90_day_ct")
    private String custExtnlDelinq90DayCt;
    
    @JsonProperty("cust_extnl_delinq_in")
    private String custExtnlDelinqIn;

    // 生成所有字段的getter、setter方法
    public String getCustXrefId() {
        return custXrefId;
    }

    public void setCustXrefId(String custXrefId) {
        this.custXrefId = custXrefId;
    }

    // 其余字段的getter、setter同理,此处省略
}

中间数据容器类(对应data节点)

import java.util.List;

public class Data {
    private List<Individual> individuals;

    // getter、setter
    public List<Individual> getIndividuals() {
        return individuals;
    }

    public void setIndividuals(List<Individual> individuals) {
        this.individuals = individuals;
    }
}

顶层响应类(对应整个JSON根节点)

public class ApiResponse {
    private Data data;

    // getter、setter
    public Data getData() {
        return data;
    }

    public void setData(Data data) {
        this.data = data;
    }
}

2. 修改RestTemplate调用逻辑

直接将postForEntity的响应类型指定为ApiResponse.class,RestTemplate会自动通过Jackson完成JSON到POJO的映射,无需手动处理字符串:

ResponseEntity<ApiResponse> responseEntity = restTemplate.postForEntity(url, entity, ApiResponse.class);
ApiResponse apiResponse = responseEntity.getBody();

// 读取示例数据
if (apiResponse != null && apiResponse.getData() != null) {
    List<Individual> individuals = apiResponse.getData().getIndividuals();
    if (!individuals.isEmpty()) {
        Individual firstIndividual = individuals.get(0);
        String custXrefId = firstIndividual.getCustXrefId();
        // 其他字段操作逻辑
    }
}

3. 关键注意事项

  • Spring Boot项目中,spring-boot-starter-web依赖已包含Jackson库,无需额外引入;普通Spring项目需添加com.fasterxml.jackson.core:jackson-databind依赖。
  • 如果Java字段名与JSON键名完全一致(如individuals),可省略@JsonProperty注解;命名风格不同时(JSON下划线、Java驼峰),必须用该注解明确映射关系。
  • 可使用Lombok的@Data注解简化POJO代码,自动生成getter、setter等方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:35:23