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