java - Jersey JAX-RS 客户端 XML 到 java.util.List 反序列化

标签 java web-services rest jersey jax-rs

我正在尝试访问一个 JAX-RS 服务( Jersey 实现),它返回一个 XML 格式的 java.util.employees 列表。

服务方法签名如下所示:

@GET
@Path("/getEmployeeListXML")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_XML)
public List<EmployeeXML> getEmployeeListXML(@QueryParam("id") String id){
    //Some code which returns a List<EmployeeXML>
}

返回的XML格式是这样的:

<employeeXMLs>
    <employeeXML>
            <empId>1</empId>
            <empName>John</empName>
            <empAge>35</empAge>
            <empSex>Male</empSex>
    </employeeXML>
    <employeeXML>
            <empId>2</empId>
            <empName>Lisa</empName>
            <empAge>23</empAge>
            <empSex>Female</empSex>
    </employeeXML>
</employeeXMLs>

为了从我的 Jersey 客户端访问它,我使用了这个代码:

List<EmployeeXML> empListXML = (List<EmployeeXML>)service.path("rest").path("GetService").path("getEmployeeListXML").accept(MediaType.APPLICATION_XML).get(EmployeeXML.class);

这是不正确的,因为返回类型应该是一个列表,但在 get 方法中,目前我正在尝试检索单个对象。我不确定如何从客户端检索列表:(

我遇到了这个异常:

 unexpected element (uri:"", local:"employeeXMLs"). Expected elements are <{}employeeListXML>,<{}employeeXML>

请帮助我完成这项工作。

谢谢,

最佳答案

您可以使用 GenericType 类来获取对象列表:

List<EmployeeXML> empListXML = (List<EmployeeXML>)service.path("rest").path("GetService").path("getEmployeeListXML").accept(MediaType.APPLICATION_XML).get(new GenericType<List<EmployeeXML>>(){});

关于java - Jersey JAX-RS 客户端 XML 到 java.util.List 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15113913/

相关文章:

rest - 找不到响应类型为[com.src.model.UserDTO]和内容类型为[text/html; charset = UTF-8]的HttpMessageConverter

java - RESTful 服务返回 String[] 对象时出现问题

java - Spring Security 不适用于 "hasRole(' ROLE_ADMIN')"或 ROLE_ADMIN

javascript - 如何检索 Web 服务数据并将其放入 html 表中?

c# - WCF wsHttpBinding 和 XML 签名

ios - AFNetworking 2.0 中的 Web 服务调用问题

api - Yii2 Restful API - 添加新操作的示例

java - 使用 jar 在 Windows 调度程序中运行批处理脚本

java - 使用 mapstruct 映射带有参数的集合

java - CompilationTask.call() 引入了 ClassNotFoundException。在 JDK6 中工作,不在 JDK7 中工作