如何在Java的API调用中传递数组作为参数?
在Java中传递数组作为API调用参数的实现方案
针对你需要构造包含用户数组、并动态填充消息内容的API请求体需求,这里给出具体实现步骤:
1. 定义对应JSON结构的Java实体类
先创建匹配请求体结构的POJO类,方便后续序列化:
import java.util.List; // 请求体主类 public class ApiRequest { private List<User> list; private String Message; // Getter、Setter、构造方法 public List<User> getList() { return list; } public void setList(List<User> list) { this.list = list; } public String getMessage() { return Message; } public void setMessage(String message) { Message = message; } } // 用户数据类 public class User { private String name; private String account; private int accountbalance; // Getter、Setter、构造方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public int getAccountbalance() { return accountbalance; } public void setAccountbalance(int accountbalance) { this.accountbalance = accountbalance; } }
2. 生成随机测试数据并填充请求体
用代码生成示例中的随机数据,同时替换消息模板里的占位符:
import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.UUID; public class ApiCallExample { public static void main(String[] args) { // 生成随机用户数据 User user = new User(); user.setName(generateRandomFullName()); user.setAccount(UUID.randomUUID().toString().replace("-", "").substring(0, 10)); // 生成随机账号 user.setAccountbalance(new Random().nextInt(10000)); // 生成随机余额 // 构造用户数组(List) List<User> userList = new ArrayList<>(); userList.add(user); // 替换消息模板中的占位符 String messageTemplate = "Dear %s, your %s has been credited with Rs.%d."; String filledMessage = String.format(messageTemplate, user.getName(), user.getAccount(), user.getAccountbalance()); // 组装完整请求体 ApiRequest request = new ApiRequest(); request.setList(userList); request.setMessage(filledMessage); } // 简单生成随机全名的方法 private static String generateRandomFullName() { String[] firstNames = {"John", "Jane", "Mike", "Emily", "David"}; String[] lastNames = {"Doe", "Smith", "Johnson", "Williams", "Brown"}; Random random = new Random(); return firstNames[random.nextInt(firstNames.length)] + " " + lastNames[random.nextInt(lastNames.length)]; } }
3. 发送API请求
方案一:使用Spring RestTemplate
import org.springframework.web.client.RestTemplate; public class ApiSender { public static void sendRequest(ApiRequest request) { RestTemplate restTemplate = new RestTemplate(); String apiUrl = "https://your-api-endpoint.com/xxx"; // 替换为实际API地址 // 发送POST请求,自动序列化请求体为JSON String response = restTemplate.postForObject(apiUrl, request, String.class); System.out.println("API响应:" + response); } }
方案二:使用Java原生HttpClient
import com.fasterxml.jackson.databind.ObjectMapper; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class NativeHttpClientExample { public static void sendRequest(ApiRequest request) throws Exception { ObjectMapper objectMapper = new ObjectMapper(); String requestJson = objectMapper.writeValueAsString(request); HttpClient client = HttpClient.newHttpClient(); HttpRequest httpRequest = HttpRequest.newBuilder() .uri(URI.create("https://your-api-endpoint.com/xxx")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(requestJson)) .build(); HttpResponse<String> response = client.send(httpRequest, HttpResponse.BodyHandlers.ofString()); System.out.println("响应状态码:" + response.statusCode()); System.out.println("响应内容:" + response.body()); } }
注意事项
- 确保项目引入JSON序列化依赖,比如Jackson(
com.fasterxml.jackson.core:jackson-databind) - 若需批量生成多个用户,只需往
userList中添加更多User对象即可 - 消息模板中的占位符要与User类属性对应,避免拼写错误
内容的提问来源于stack exchange,提问作者Abhishek Shrivastav
相关产品推荐
相关产品推荐

