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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:10:28