有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java jsonrpc4j:如何从服务器获取列表<SomeObject>?

我正在尝试使用jsonrpc4j从JSON-RPC服务器获取对象AccountData的列表

以下是代码:

class AccountData {
    public Integer id;
    public Double accDeposit;
    public Double accCredit;
    public String accPerson;
    public String accAddressCity;
    public String accAddressStreet;
    public String accAddressBuild;
    public String accAddressApt;
    public Date accRegDate;
    public String accPersonPassport;
    public String accPersonPhone;
    public String accPersonEmail;
    public String accComments;
    public String accLogin;
    public String accPassword;
}

public void initialize() {

    try {
        JsonRpcHttpClient client = new JsonRpcHttpClient(new URL("http://localhost:8032/api"));

        try {
            List<AccountData> accountData = Arrays.asList(client.invoke("getUserAccount", new Object[]{}, AccountData.class));

            System.out.println("Method invoked");

            if (accountData != null) {
                for (AccountData data : accountData) {
                    System.out.println("login=" + data.accLogin);
                }
            }
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

}

我有个例外:

> com.googlecode.jsonrpc4j.HttpException: null
com.googlecode.jsonrpc4j.JsonRpcHttpClient.invoke(JsonRpcHttpClient.java:166)
com.googlecode.jsonrpc4j.JsonRpcHttpClient.invoke(JsonRpcHttpClient.java:121)
com.googlecode.jsonrpc4j.JsonRpcHttpClient.invoke(JsonRpcHttpClient.java:132)

我的JSON-RPC服务器正确返回结果,我已经在python/php客户端中进行了测试。单结果(非数组)在Java中也能正常工作


共 (1) 个答案

  1. # 1 楼答案

    使用AccountData[].class

    `

    try {
        JsonRpcHttpClient client = new JsonRpcHttpClient(new URL("http://localhost:8032/api"));
    
        try {
            List<AccountData> accountData = Arrays.asList(client.invoke(
                "getUserAccount", 
                new Object[]{}, 
                AccountData[].class
            ));
    
            System.out.println("Method invoked");
    
            if (accountData != null) {
                for (AccountData data : accountData) {
                    System.out.println("login=" + data.accLogin);
                }
            }
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    

    `