我做了一个REST调用,我想找回包含MyClass对象列表的json。 实际上我得到了这个例外:
{“error”:“Java类java.util.List的消息体读取器,和 Java类型接口java.util.List和MIME媒体类型 应用/ JSON; charset = UTF-8不是 发现 “ ”类型“: ”com.sun.jersey.api.client.ClientHandlerException“, ”堆栈跟踪“:” 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 \达 com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:506)\ n \达 com.sun.jersey.api.client.WebResource.handle(WebResource.java:684)\ n \达 com.sun.jersey.api.client.WebResource.access $ 200(WebResource.java:74)\ n \达 com.sun.jersey.api.client.WebResource $ Builder.get(WebResource.java:507)\ n \达 .. [更多堆栈跟踪] ..}
代码是:
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
{ ... }
我错过了什么吗?
答案 0 :(得分:7)
是的,由于Java中的类型擦除,Jersey看不到列表的类型。您应该更改getList()方法的最后一行,如下所示:
return resource.get(new GenericType<List<MyClass>>() {});
然后它应该工作。