1

我进行了 REST 调用,我想取回包含 MyClass 对象列表的 json。实际上我得到了这个例外:

{"error":"Java 类 java.util.List 和 Java 类型接口 java.util.List 和 MIME 媒体类型 application/json 的消息正文阅读器;未找到 charset=UTF-8","type" :"com.sun.jersey.api.client.ClientHandlerException","stackTrace":"com.sun.jersey.api.client.ClientHandlerException:Java 类 java.util.List 和 Java 类型接口 java 的消息体阅读器.util.List 和 MIME 媒体类型 application/json;未找到 charset=UTF-8\n\tat com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:550)\n\tat com .sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:506)\n\tat com.sun.jersey.api.client.WebResource.handle(WebResource.java:684)\n\tat com.sun .jersey.api.client.WebResource.access$200(WebResource.java:74)\n\tat com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:507)\n\tat ..[更多堆栈跟踪]..}

代码是:

public List<'MyClass> getLIst()
{

ClientConfig config = new DefaultClientConfig();
config.getClasses().add(MyObjectMapper.class);
Client client = Client.create(config);

WebResource resource = client.resource(HOST_PATH).path(PATH).type(MediaType.APPLICATION_JSON_TYPE).accept(MediaType.APPLICATION_JSON_TYPE);

return resource.get(List.class);
}

@XmlRootElement
public class MyClass
{ ... }

我错过了什么?

4

1 回答 1

7

是的,由于 Java 中的类型擦除,Jersey 看不到列表的类型。您应该如下更改 getList() 方法的最后一行:

return resource.get(new GenericType<List<MyClass>>() {});

然后它应该工作。

于 2012-06-20T10:13:04.777 回答