gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:57:08 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com