Java jersey版本1对象请求列表的restlet语法
我正在尝试将以下jersey代码转换为restletJava jersey版本1对象请求列表的restlet语法,java,jersey,restlet,Java,Jersey,Restlet,我正在尝试将以下jersey代码转换为restlet WebResource webResource = client.resource("/getlistofobjects"); List<MyObject> thisMemberObjects = webResource .accept("application/json") .get(new GenericType<List<MyObject>>(){}); thisListOfObje
WebResource webResource = client.resource("/getlistofobjects");
List<MyObject> thisMemberObjects = webResource
.accept("application/json")
.get(new GenericType<List<MyObject>>(){});
thisListOfObjects.addAll((List<MyObject>)thisMemberObjects);
WebResource-WebResource=client.resource(“/getlistofobjects”);
列出thisMemberObjects=webResource
.accept(“应用程序/json”)
.get(新的GenericType(){});
addAll((列表)thisMemberObjects);
首先,您需要创建一个带注释的界面,如下所述:
public interface MyService {
@Get
List<MyObject> getObjs();
}
别忘了在类路径中添加扩展名org.restlet.ext.jackson
,它将自动将JSON内容转换为Java对象
下面是一个示例pom.xml
文件:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.restlet</groupId>
<artifactId>test.restlet.client</artifactId>
<name>${project.artifactId}</name>
<packaging>jar</packaging>
<version>1.0.0-snapshot</version>
<properties>
<java-version>1.7</java-version>
<restlet-version>2.3.1</restlet-version>
</properties>
<dependencies>
<dependency>
<groupId>org.restlet.jse</groupId>
<artifactId>org.restlet</artifactId>
<version>${restlet-version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jse</groupId>
<artifactId>org.restlet.ext.jackson</artifactId>
<version>${restlet-version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jse</groupId>
<artifactId>org.restlet.ext.httpclient</artifactId>
<version>${restlet-version}</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>maven-restlet</id>
<name>Public online Restlet repository</name>
<url>http://maven.restlet.com</url>
</repository>
</repositories>
</project>
您需要有以下bean:
public class ResponseBean {
private List<ResponseElementBean> elitFileBasic;
public List<ResponseElementBean> getElitFileBasic() {
return this.elitFileBasic;
}
public void setElitFileBasic(List<ResponseElementBean> elitFileBasic) {
this.elitFileBasic = elitFileBasic;
}
}
public class ResponseElementBean {
private String application;
private fileName;
// Getters and setters
(...)
}
您可以注意到,您可以使用Jackson更新响应反序列化,以支持对象列表作为方法getObjs
的返回。对于这种用例,您需要注册一个自定义反序列化程序。这个答案可以给你一些有趣的提示:
希望它能帮助你,
Thierry正在获取异常-com.fasterxml.jackson.databind.JsonMappingException:无法反序列化位于[Source:sun.net.www.protocol.http.HttpURLConnection]的START_对象令牌之外的java.util.ArrayList实例$HttpInputStream@1a1d6a08;行:1,列:1]@thierry Templier能否提供接收到的数据结构示例?谢谢这将帮助我理解异常…{“elitFileBasic”:[{“应用程序”:“$TRACKING”,“文件名”:“FILE.TRACKING.DATA”},{“应用程序”:“$TRACKING$”,“文件名”:“TRACKING.EVENT.5”}]}Previor comment是restlet客户端从Jersey服务器@thierry templierI收到的json结构,它用您在评论中给我的响应内容更新了我的答案。。。希望对你有帮助
{
"elitFileBasic": [
{
"application":"$TRACKING",
"fileName":"FILE.TRACKING.DATA"
},
{
"application":"$TRACKING$",
"fileName":"TRACKING.EVENT.5"
}
]
}
public class ResponseBean {
private List<ResponseElementBean> elitFileBasic;
public List<ResponseElementBean> getElitFileBasic() {
return this.elitFileBasic;
}
public void setElitFileBasic(List<ResponseElementBean> elitFileBasic) {
this.elitFileBasic = elitFileBasic;
}
}
public class ResponseElementBean {
private String application;
private fileName;
// Getters and setters
(...)
}
public interface MyService {
@Get
ResponseBean getObjs();
}