resttemplate返回为list
时间: 2025-06-09 16:26:54 浏览: 2
### 如何使用 RestTemplate 返回 List 类型的数据
RestTemplate 是 Spring 提供的一个用于同步 HTTP 请求的类,支持多种 HTTP 方法(如 GET、POST、PUT 等)。当需要从服务器获取一个 `List` 类型的数据时,可以通过 `exchange` 方法结合泛型参数来实现。
以下是实现的具体方式:
```java
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.web.client.RestTemplate;
import java.util.List;
public class RestTemplateListExample {
public static void main(String[] args) {
// 创建 RestTemplate 实例
RestTemplate restTemplate = new RestTemplate();
// 设置请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 构建请求实体
HttpEntity<String> entity = new HttpEntity<>(headers);
// 定义 URL
String url = "http://example.com/api/users"; // 假设返回的是用户列表
// 使用 exchange 方法获取 List 类型数据
List<User> users = restTemplate.exchange(
url,
HttpMethod.GET,
entity,
new ParameterizedTypeReference<List<User>>() {} // 指定返回类型为 List<User>
).getBody();
// 输出结果
System.out.println(users);
}
// 示例 User 类
static class User {
private String id;
private String name;
// Getters and Setters
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{id='" + id + "', name='" + name + "'}";
}
}
}
```
上述代码中,通过 `ParameterizedTypeReference` 指定了返回类型为 `List<User>`,从而能够正确解析 JSON 数据并将其映射为 Java 对象列表。这种方式适用于返回复杂类型的场景[^2]。
如果服务器返回的是纯 JSON 数组而非包装对象,则可以直接指定返回类型为 `List<Map<String, Object>>` 或其他适合的泛型类型。
```java
List<Map<String, Object>> response = restTemplate.exchange(
url,
HttpMethod.GET,
entity,
new ParameterizedTypeReference<List<Map<String, Object>>>() {}
).getBody();
```
这种实现方式更加灵活,适用于无法预定义具体对象结构的场景[^3]。
### 注意事项
1. 如果服务器返回的 JSON 数据格式不符合预期(例如缺少字段或字段类型不匹配),可能会导致反序列化失败。
2. 需要确保服务器返回的 JSON 数据是一个数组,否则会抛出异常。
阅读全文
相关推荐


















