java - 将 Jersey 输入流解析为 JacksonObject

标签 java web-services jersey jackson

我有一个使用 Jersey/Jackson 实现的 REST WS。已实现的方法是 PUT,它工作正常,直到我得到一个空的或空的主体。

经过一番谷歌搜索后,我意识到这是一个已知问题,并且有一些解决方法可用。我发现(并实现)的解决方法之一是使用 ContentRequestFilter 来拦截调用,进行基本检查并决定要做什么。

但在这种情况下,我必须检查调用是否针对该特定方法。我不喜欢这样,因为如果将来方法发生变化怎么办?

我想要的是作为InputStream接收而不是解析的JacksonObject(它是使用Jackson Annotations创建的自定义POJO对象)并解析输入流来做到这一点。但是,我无法找到执行此操作的引用,即从输入流(基于输入媒体类型)解析 jackson 对象并返回相应的对象。

有人可以指导我找到一些有用的资源或在这里帮助我吗?

最佳答案

这是从资源处理的请求中获取内容的简单方法。只需将 Map.class 替换为带注释的 POJO:

@POST
public void handle(String requestBody) throws IOException {
    ObjectMapper om = new ObjectMapper();
    Map result = om.readValue(requestBody, Map.class);
}

通过这种方法,您可以以任何您认为合适的方式自由处理 null 值。

关于java - 将 Jersey 输入流解析为 JacksonObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22414658/

相关文章:

java - 如何更改已部署的 war 文件的数据库设置?

c# - asp.net 应用程序中的 MySQL 连接器引用

asp.net - ASP.NET Web API 的继承和 JSON 格式化程序

java - 覆盖 Jersey 的提供者

java - JPA CriteriaQuery - 重音不敏感

java - 初始化 Google map 后在 View 中重绘 fragment - Android

java - 用java计算折扣系数

java - R.menu 无法在 Eclipse 中解析

java - 读取 JAX-RS body InputStream 两次

java - 为什么 REST Web 服务不支持 war 之外的 EJB 资源类?