Jersy REST服务不从HashMap返回对象值

时间:2017-06-28 15:50:06

标签: java

我们已经创建了Jersy REST服务。 我们将返回带有10个字符串字段和一个哈希映射的响应对象,格式如下面的代码片段所示。

我们可以收到所有10个字符串字段值。

当从客户端程序访问HashMap时,我们也可以看到带有键/值的HashMap。

从客户端程序访问时,HashMap中的CustomObject变为String。

所以它抛出异常

Listcom.tetherfi.restful.model.AppTypeData@2dc0f069 测试 错误:java.lang.ClassCastException:java.lang.String无法强制转换为com.tetherfi.restful.model.AppTypeData。

我们使用Moxy进行映射。请告知是否有办法保留对象值。

来自Jersy服务的响应对象

@XmlRootElement 公共类ServiceRespParams {

private String param1;
private String param2;
private String param3;
private String param4;
private String param5;

private HashMap<String,ArrayList<AppTypeData>>hm;

public HashMap<String, ArrayList<AppTypeData>> getHm() {
    return hm;
}

public void setHm(HashMap<String, ArrayList<AppTypeData>> hm) {
    this.hm = hm;
}

客户端代码

public class Client {

public ServiceResponse postRequest(ServiceRequest request) {
    Logger logger = Logger.getLogger("JerseyClient");
    ServiceResponse serviceResponse = null;
    WebTarget webTarget = null;
    Response response = null;

    // creating client with MOXy JSON

    Client client = ClientBuilder.newClient();

    try {
    String url = "http://localhost:9080/Rest_ProxyLayer/webapi/doc01";
    logger.info("Sending Request.... "+url);
        webTarget = client.target(url).property(ClientProperties.CONNECT_TIMEOUT, 1000)
                .property(ClientProperties.READ_TIMEOUT, 1000);
        logger.info("Request Sent...");
        Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
        response = invocationBuilder.get();
        logger.info("Response Status :"+response.getStatus());
        serviceResponse = response.readEntity(ServiceResponse.class);

        System.out.println("Response from service"+ serviceResponse.getHm().get("CreditCard").get(0).getParam1());
    } catch (Exception e) {
        logger.error("Error!! Check connection..", e);
        e.printStackTrace();
    }
    return serviceResponse;
}

}

尝试访问该方法时抛出类强制转换异常。 System.out.println(“来自服务的响应”+ serviceResponse.getHm()。get(“CreditCard”)。get(0).getParam1());

Rest服务的输出。 Hashmap条目如下。它显示了对象但似乎转换为字符串。

HM:{CreditCard = [com.tetherfi.restful.model.AppTypeData@1b6c278e,com.tetherfi.restful.model.AppTypeData@208f5a00]}

由于 Vinoth

0 个答案:

没有答案