java - 在 ContainerResponseFilter 中使用 Moxy 进行 JSON 解码

标签 java json jaxb jersey moxy

我在 Jersey (2.7) 项目中使用 Moxy 基本上只是为了在服务发出响应时将我的对象编码为 JSON。它工作正常,但现在我还使用 ContainerResponseFilter 对发出的每个响应进行一些更改,并且我不确定如何将请求正文的内容解码到对象中,这是我需要的。

具体:

  • 我刚刚在 ResourceConfig 实例中注册了 Moxy:register(MOXyJsonProvider.class)
  • 某个类正在使用 JAXB 注释,因此当我在 Response.entity() 中设置该类的实例时,它会正确转换为 JSON
  • 当我将请求正文(也是 JSON)设置为方法参数时,它也会被解码到对象中,例如:

    @Consumes(MediaType.APPLICATION_JSON) 公共(public)响应 getSomething( MyClass 实例 ) {

但是在 ContainerResponseFilter 内,我可以像这样访问请求正文,

InputStream body = requestContext.getEntityStream()

但我不确定是否可以将其自动转换为对象。我需要的信息相对简单,所以我想我可以用另一种方式解析 JSON,但我很好奇。

我尝试过搜索,但没有找到。

最佳答案

在 ContainerReponseFilter 中,您可以执行以下操作:

public class ApplicationResponseFilter implements ContainerResponseFilter {

    @Override
    public void filter(final ContainerRequestContext request,
        final ContainerResponseContext response) throws IOException {

        // your code
        response.getEntity();

    }
}

使用 JAXB 注释将其转换为您的对象。我没有在我的responseFilter 中执行此操作,但我刚刚调试了它并且它有效。

关于java - 在 ContainerResponseFilter 中使用 Moxy 进行 JSON 解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23785789/

相关文章:

java - 将文档上传到 Watson 的 Retrieve and Rank 服务

java - 应用程序启动时图像超出 imageview

json - 使用动态架构展平 Azure 数据工厂中的嵌套 JSON 对象

java - 无法将 json 字符串解析为通用 java 对象

Java 解码程序异常

java - JAXB 2.x : Abstract methods get marshalled as Attribute

java - 如何设置 TC Server Developer Edition(在 STS 中)并访问 UNC 路径

java - Hadoop - 为特定节点的 Mapper 中的每个 map() 函数创建类的单个实例

php - 如何使用 mysql 和 php 选择多行?

javascript - 将没有属性的值 append 到 json javascript