我想将我的球衣版本从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?没有回答我的问题,因为它没有解释我如何添加我想要作为输出返回的课程
答案 0 :(得分:1)
没有必要这样做。您要么在Jersey 2.x中使用MOXy或Jackson作为JSON提供程序。对于后者,您使用MoxyJsonConfig
进行配置。对于杰克逊,您使用ObjectMapper
。找出您正在使用的提供程序,并配置相应的对象。两者都可以像您当前所做的ContextResolver
一样进行配置。
就您当前的配置而言
对于漂亮的印刷品,您可以执行以下操作
杰克逊
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
MOXY
MoxyJsonConfig config = new MoxyJsonConfig()
.setFormattedOutput(true);