Java jersey版本1对象请求列表的restlet语法

Java 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

我正在尝试将以下jersey代码转换为restlet

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();
}