java - 以编程方式为 JAX-RS 注册 POJO 支持或 JSON 提供程序

标签 java json jersey jackson jax-rs

我正在为应用程序开发插件。这些插件基本上是 JAX-RS 端点。它们被打包并部署到运行 Jetty 并注册它们的应用程序的类路径中。示例:

@GET
@Path("/{id}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Product get(@PathParam("id") String id) {
    return Product.lookup(id);
}

为了能够通过 JAX-RS 返回任意 POJO,我想启用 POJOMapping 或显式注册类似 Jackson Provider 的东西。

我知道如果我可以访问 web.xml 或通过 Client 配置我可以做到这一点 [ Jersey JSON Documentation ].

不幸的是,鉴于插件架构,我无法访问这些方法。

有没有办法以任何其他方式注册像 Jackson 这样的提供者?

最佳答案

您可以使用 JAX-RS Application 类作为应用程序的一部分来注册 JSON 绑定(bind)提供程序。下面是一个注册 EclipseLink MOXy 的例子作为 JSON 提供者。

package org.example;

import java.util.*;
import javax.ws.rs.core.Application;
import org.eclipse.persistence.jaxb.rs.MOXyJsonProvider;

public class CustomerApplication  extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        HashSet<Class<?>> set = new HashSet<Class<?>>(2);
        set.add(MOXyJsonProvider.class);
        set.add(CustomerService.class);
        return set;
    }
}

了解更多信息

关于java - 以编程方式为 JAX-RS 注册 POJO 支持或 JSON 提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14623588/

相关文章:

java - 如何将Java对象转换为Json格式化属性名

json - Microsoft VS Code 上的 JSON 和 tmTheme 主题文件有什么区别?

java - 如何在 ContainerRequestFilter 中检索请求的匹配资源

java - Jersey 1.x - 兼容性

java - 使用 Spring Oauth2 缓存访问 token

java - 命名静态构造函数方法的首选 Java 约定是什么

json - 标准定义json文件扩展名?

python - 使用 Scrapy shell 抓取 JSON 文件时终端窗口自动关闭

json - 如何从 JAX-RS 客户端提取 ObjectMapper?

java - catch PacketTooBigException() block 在 Hibernate 中不起作用