我正在看球衣的内部,关于它如何将简单的POJO转换为Json。 Jersey有一个接口Providers,它将提供给定类和mediaType的contextResolvers列表。一旦我们得到了contextResolver,我们就可以从中获取Context和Marshaller,它可以用来获取json字符串,如下图所示。
让我们假设我们要序列化Pojo“obj”。代码如下所示
Providers ps = ...
ContextResolver<JAXBContext> resolver = ps.getContextResolver(obj.getClass(), MediaType.APPLICATION_JSON_TYPE);
JAXBContext ctx = resolver.getContext(obj.getClass());
ctx.createMarshaller().marshal(obj, writer);
通过上述方式,我们可以将任何具有有效上下文解析器的POJO转换为json。但问题是我们如何获得供应商的处理程序。
PS:我还没有编译这段代码,但从我从源头上看到的这就是球衣的作用。为什么我要做所有这些事情,以便我们可以使用JAX-RS apis直接将对象转换为JSON。而不是使用任何实现代码。
答案 0 :(得分:1)
在JAX-RS资源条目中,使用@Context批注告诉Jersey注入生产者:
@Context Producers producers;
答案 1 :(得分:0)
所以你的问题是:“如何找到提供者”?
您必须编写代码以在类路径中查找使用@Provider注释的类。