我使用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依赖性就完成了工作。