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

如何定义适配指定JSON的Java DTO结构及RestTemplate调用方式?

适配JSON响应的Java DTO结构与RestTemplate调用示例

从API获取的JSON响应如下:

[
  {"employee":{"id":1,"name":"somu","employee_company":{"id":100,"name":"comp1"}}},
  {"employee":    {"id":2,"name":"raju","employee_company":{"id":101,"name":"comp2"}}},
  {"employee":{"id":3,"name":"nagu","employee_company":{"id":105,"name":"comp5"}}}
]

针对这个JSON结构,下面提供两种可行的Java DTO定义方案,以及对应的RestTemplate调用写法:


方案1:用外层DTO包裹员工对象

DTO结构代码

// 公司信息实体类
class EmployeeCompany {
    private Integer id;
    private String name;

    // 需生成Getter、Setter,以及无参/有参构造方法
}

// 员工信息实体类
class Employee {
    private Integer id;
    private String name;
    private EmployeeCompany employee_company;

    // 需生成Getter、Setter,以及无参/有参构造方法
}

// 外层包装DTO,对应JSON里每个{"employee": ...}节点
class EmployeeWrapperDTO {
    private Employee employee;

    // 需生成Getter、Setter,以及无参/有参构造方法
}

RestTemplate调用写法

因为返回的是泛型列表,需要用ParameterizedTypeReference指定具体类型:

List<EmployeeWrapperDTO> employeeList = restTemplate.exchange(
    "你的API地址",
    HttpMethod.GET,
    null,
    new ParameterizedTypeReference<List<EmployeeWrapperDTO>>() {}
).getBody();

方案2:直接用Map嵌套接收(无外层DTO)

DTO结构代码

只需要定义员工和公司的实体类即可:

// 公司信息实体类
class EmployeeCompany {
    private Integer id;
    private String name;

    // 需生成Getter、Setter,以及无参/有参构造方法
}

// 员工信息实体类
class Employee {
    private Integer id;
    private String name;
    private EmployeeCompany employee_company;

    // 需生成Getter、Setter,以及无参/有参构造方法
}

RestTemplate调用写法

直接接收为List<Map<String, Employee>>类型,后续遍历取出员工对象:

List<Map<String, Employee>> responseList = restTemplate.exchange(
    "你的API地址",
    HttpMethod.GET,
    null,
    new ParameterizedTypeReference<List<Map<String, Employee>>>() {}
).getBody();

// 遍历处理数据
for (Map<String, Employee> item : responseList) {
    Employee employee = item.get("employee");
    // 此处可操作员工数据
}

两种方案都能正常解析目标JSON:方案1结构更清晰,适合后续功能扩展;方案2写法简洁,适合快速开发场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:07:24