sun*_*nny 1 java jersey jackson
我做了一个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 \n \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
{ ... }
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
是的,由于Java中的类型擦除,Jersey看不到列表的类型.您应该更改getList()方法的最后一行,如下所示:
return resource.get(new GenericType<List<MyClass>>() {});
Run Code Online (Sandbox Code Playgroud)
然后它应该工作.
| 归档时间: |
|
| 查看次数: |
6872 次 |
| 最近记录: |