Java 检查复杂列表的REST服务

Java 检查复杂列表的REST服务,java,rest,jersey,jax-rs,Java,Rest,Jersey,Jax Rs,我想用JAX-RS编写一个REST服务,它使用表单中的模块列表 [ { “名称”:“IRGENDWAS.TLK”, “版本”:“020”, “bibliothek”:“asdf” }, { “名称”:“IRGENDWAS2.TLK”, “版本”:“030”, “bibliothek”:“asdf” }, { “名称”:“XIRGENDWAS2.TLK”, “版本”:“030”, “bibliothek”:“asdf” } ] 检查它们的存在,返回类似 [ { “名称”:“IRGENDWAS.T

我想用JAX-RS编写一个REST服务,它使用表单中的模块列表

[
{
“名称”:“IRGENDWAS.TLK”,
“版本”:“020”,
“bibliothek”:“asdf”
},
{
“名称”:“IRGENDWAS2.TLK”,
“版本”:“030”,
“bibliothek”:“asdf”
},
{
“名称”:“XIRGENDWAS2.TLK”,
“版本”:“030”,
“bibliothek”:“asdf”
}
]
检查它们的存在,返回类似

[
{
“名称”:“IRGENDWAS.TLK”,
“版本”:“020”,
“bibliothek”:“asdf”,
“存在”:真实
},
{
“名称”:“IRGENDWAS2.TLK”,
“版本”:“030”,
“bibliothek”:“asdf”,
“存在”:真实
},
{
“名称”:“XIRGENDWAS2.TLK”,
“版本”:“030”,
“bibliothek”:“asdf”,
“存在”:虚假
}
]
我尽我所能让胖子看起来像这样

@POST
@路径(“/bs2存在性检查”)
@产生(MediaType.APPLICATION_JSON)
@使用(MediaType.APPLICATION_JSON)
公共列表bs2ExistenceCheck(字符串ModuleListe)
{
@抑制警告(“未选中”)
List nameList=JsonPath.parse(moduleliste)
.read(“$.[*].name”,List.class);
@抑制警告(“未选中”)
List versionList=JsonPath.parse(moduleliste)
.read(“$.[*].version”,List.class);
@抑制警告(“未选中”)
List-bibliothekList=JsonPath.parse(moduleliste)
.read(“$.[*].bibliothek”,List.class);
List backList=new ArrayList();
对于(int i=0;i
我想这里不需要使用JsonPath,我可以直接映射它。此外,我不知道这是否应该是一个POST请求


可能有人可以告诉我如何正确执行此操作。

为了让您的服务自动封送和解封Java对象到Json,您必须为Jersey serlvet配置指定一个特殊参数(显然这将在web.xml文件中)。此参数为com.sun.jersey.api.json.POJOMappingFeature,基本上将jersey与Jackson集成

<init-param>
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
    <param-value>true</param-value>
</init-param>

为什么不调用类Bs2Module并接受列表作为方法参数,然后在相同的对象上设置存在性并返回相同的列表呢。如果您已经有了POJO对序列化的支持,那么您还应该有反序列化支持,以便能够接受POJO列表作为方法参数。只要确保POJO类上有一个无参数构造函数,并且所有字段都有setter,我已经尝试过了,但是反序列化失败了。我想我不能将
列表
与自建类一起使用。可能我需要以某种方式定义JSON应该如何反序列化。发生了什么?你有错误吗?如果你是,你能发布它,连同你的POJO类和你正在使用的依赖项吗。不管怎样。这似乎是可行的,但它不需要设置
init参数