将 JSONJAXBContext jersey 1.x 迁移到 2.x
Migration of JSONJAXBContext jersey 1.x to 2.x
我想将我的球衣版本从 1.x 升级到 2.x。
在我的代码中我有:
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JAXBContextResolver implements ContextResolver<JAXBContext> {
private static final Class<?>[] classes = {
A.class, B.class, C.class, D.class, E.class,
F.class, G.class
};
private JAXBContext context;
public JAXBContextResolver() throws Exception {
context = new JSONJAXBContext(JSONConfiguration.natural()
.humanReadableFormatting(true).rootUnwrapping(true).build(),
classes);
}
public JAXBContext getContext(Class<?> objectType) {
return context;
}
}
但是 JSONJAXBContext 和 JSONConfiguration 没有在 jersey 中定义 2.x。
我怎样才能做出相应的改变?
问题 Where did JSONConfiguration go in Jersey 2.5.x? 没有回答我的问题,因为它没有解释如何添加我想要 return 作为输出
的 class
不需要这个。您将使用 MOXy 或 Jackson 作为您在泽西 2.x 的 JSON 供应商。对于后者,您可以配置 MoxyJsonConfig
。对于 Jackson,您使用 ObjectMapper
。找出您正在使用的提供程序,并配置相应的对象。两者都可以像您目前所做的那样在 ContextResolver
中进行配置。
就你目前的配置而言
- 您不需要使用其中任何一个配置任何 类。
- 默认情况下,展开的对象是序列化的。
为了漂亮的打印,您需要执行以下操作
杰克逊
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
MOXy
MoxyJsonConfig config = new MoxyJsonConfig()
.setFormattedOutput(true);
我想将我的球衣版本从 1.x 升级到 2.x。 在我的代码中我有:
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JAXBContextResolver implements ContextResolver<JAXBContext> {
private static final Class<?>[] classes = {
A.class, B.class, C.class, D.class, E.class,
F.class, G.class
};
private JAXBContext context;
public JAXBContextResolver() throws Exception {
context = new JSONJAXBContext(JSONConfiguration.natural()
.humanReadableFormatting(true).rootUnwrapping(true).build(),
classes);
}
public JAXBContext getContext(Class<?> objectType) {
return context;
}
}
但是 JSONJAXBContext 和 JSONConfiguration 没有在 jersey 中定义 2.x。 我怎样才能做出相应的改变?
问题 Where did JSONConfiguration go in Jersey 2.5.x? 没有回答我的问题,因为它没有解释如何添加我想要 return 作为输出
的 class不需要这个。您将使用 MOXy 或 Jackson 作为您在泽西 2.x 的 JSON 供应商。对于后者,您可以配置 MoxyJsonConfig
。对于 Jackson,您使用 ObjectMapper
。找出您正在使用的提供程序,并配置相应的对象。两者都可以像您目前所做的那样在 ContextResolver
中进行配置。
就你目前的配置而言
- 您不需要使用其中任何一个配置任何 类。
- 默认情况下,展开的对象是序列化的。
为了漂亮的打印,您需要执行以下操作
杰克逊
ObjectMapper mapper = new ObjectMapper(); mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
MOXy
MoxyJsonConfig config = new MoxyJsonConfig() .setFormattedOutput(true);