将 JSON 字符串数组传递给 CXF Rest 方法
Passing JSON String array to CXF Rest Method
我需要将字符串列表/字符串数组传递给使用 Apache CXF 实现的 restful 服务方法。我可以通过将 ArrayList 包装在装饰有 JAXB 注释的 pojo class 中来实现这一点。
我应该为一个实例变量创建一个绑定 class 吗?我的方法只需要一个参数(即字符串数组)。我不能将 JSON 数组直接绑定到数组或数组列表,而不是绑定到另一个 class 吗?
请求JSON:
{"ids":[178,304,272]}
POJOclass
@XmlRootElement(name = "CommonRequest")
public class WSRestCommonRequest {
private List<String> ids;
//getter setter methods
}
工作方法
@POST
@Path("cancelThese")
public void cancelThese(CommonRequest request) throws WebServiceFault {
//---- implementation
}
我在找什么
public void cancelThese(List<String> ids) throws WebServiceFault {
//---- implementation
}
抛出以下错误
Headers: {exception=[Can not deserialize instance of java.util.ArrayList out of START_OBJECT token
直接传递JSON数组就可以完美使用你的方法[178,304,272]
@POST
@Path("cancelThese")
@Consumes(MediaType.APPLICATION_JSON)
public void cancelThese(List<String> ids) throws WebServiceFault {
//---- implementation
}
使用 CXF 3.1.6 和 Jackson 2.4.2 测试
我需要将字符串列表/字符串数组传递给使用 Apache CXF 实现的 restful 服务方法。我可以通过将 ArrayList 包装在装饰有 JAXB 注释的 pojo class 中来实现这一点。
我应该为一个实例变量创建一个绑定 class 吗?我的方法只需要一个参数(即字符串数组)。我不能将 JSON 数组直接绑定到数组或数组列表,而不是绑定到另一个 class 吗?
请求JSON:
{"ids":[178,304,272]}
POJOclass
@XmlRootElement(name = "CommonRequest")
public class WSRestCommonRequest {
private List<String> ids;
//getter setter methods
}
工作方法
@POST
@Path("cancelThese")
public void cancelThese(CommonRequest request) throws WebServiceFault {
//---- implementation
}
我在找什么
public void cancelThese(List<String> ids) throws WebServiceFault {
//---- implementation
}
抛出以下错误
Headers: {exception=[Can not deserialize instance of java.util.ArrayList out of START_OBJECT token
直接传递JSON数组就可以完美使用你的方法[178,304,272]
@POST
@Path("cancelThese")
@Consumes(MediaType.APPLICATION_JSON)
public void cancelThese(List<String> ids) throws WebServiceFault {
//---- implementation
}
使用 CXF 3.1.6 和 Jackson 2.4.2 测试