小编vie*_*che的帖子

如何使用Jersey + JAXB + JSON传输基元列表

如果我传输一个具有@XmlRoolElement的类(MyClass),此代码可以正常工作

客户

WebResource webResource = restClient.resource(getRessourceURL());
return webResource.get( new GenericType<List<MyClass>>(){} );
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试传输一个原语,如String,Integer,Boolean等...

客户

WebResource webResource = restClient.resource(getRessourceURL());
return webResource.get( new GenericType<List<Integer>>(){} );
Run Code Online (Sandbox Code Playgroud)

我收到错误:

无法封装类型"java.lang.Integer"作为元素,因为它缺少@XmlRootElement注释

在向我的请求发送实体参数时,我得到完全相同的结果:

客户

WebResource webResource = restClient.resource(getRessourceURL());
return webResource.post( new GenericType<List<Integer>>(){}, Arrays.toList("1"));
Run Code Online (Sandbox Code Playgroud)

服务器

@GET
@Path("/PATH")
@Produces(MediaType.APPLICATION_JSON)
public List<MyClass> getListOfMyClass( List<Integer> myClassIdList)
{
  return getMyClassList(myClassIdList);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法转移这种列表而不为每个这些原始类型创建包装类?还是我错过了一些明显的东西?

java json list jaxb jersey

5
推荐指数
1
解决办法
1351
查看次数

标签 统计

java ×1

jaxb ×1

jersey ×1

json ×1

list ×1