JAX-RS / Jersey以JsonNode的形式获取请求

时间:2017-07-12 10:01:27

标签: java jersey

我使用Jersey 2.25.1和JackSon 2.x作为Json提供者(https://jersey.github.io/documentation/latest/media.html#json.jackson)。

在服务中,我想直接以JsonNode的形式获取请求,但是我得到了这个异常: java.lang.NoSuchMethodError:com.fasterxml.jackson.databind.ObjectReader.forType(Lcom / fasterxml / jackson / databind / JavaType;)Lcom / fasterxml / jackson / databind / ObjectReader

我可以将它作为一个字符串并将其转换为JsonNode,但我期待JsonNode可以直接解析。

这是服务:

@PUT
@Path("/test")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Override
public Response methode1(JsonNode jsonRequest) 
    throws JsonProcessingException, IOException {

    return super.methode1(jsonRequest);
}

我想我的问题来自于我从Jersey样本(https://github.com/jersey/jersey/blob/2.26-b07/examples/json-jackson/src/main/java/org/glassfish/jersey/examples/jackson/MyObjectMapperProvider.java)得到的ContextResolver。

请注意,此映射器适用于将JsonNode类型作为响应返回的其他服务。我应该在哪里以及如何实施"读者"一部分?

编辑:正如shazin注意到这是版本兼容性问题。我的一个依赖项需要Jackson 2.3.3而jersey-media-json-jackson 2.25.1需要Jackson 2.8.4。 2.3.3版本是由maven选择的,只是添加了明确的2.8.4依赖性就完成了工作。

0 个答案:

没有答案