如何将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
相关产品推荐
相关产品推荐

