将JSONJAXBContext jersey 1.x迁移到2.x

时间:2016-01-11 18:50:13

标签: java jersey jersey-2.0 jersey-1.0

我想将我的球衣版本从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?没有回答我的问题,因为它没有解释我如何添加我想要作为输出返回的课程

1 个答案:

答案 0 :(得分:1)

没有必要这样做。您要么在Jersey 2.x中使用MOXy或Jackson作为JSON提供程序。对于后者,您使用MoxyJsonConfig进行配置。对于杰克逊,您使用ObjectMapper。找出您正在使用的提供程序,并配置相应的对象。两者都可以像您当前所做的ContextResolver一样进行配置。

就您当前的配置而言

  1. 您不需要使用其中任何一个配置任何类。
  2. 默认情况下,已解包的对象已序列化。
  3. 对于漂亮的印刷品,您可以执行以下操作

    杰克逊

    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
    

    MOXY

    MoxyJsonConfig config = new MoxyJsonConfig()
            .setFormattedOutput(true);