Я написал пост в блоге давным-давно о том, чтобы заставить Джерси правильно сериализовать одноэлементные массивы, не уверен, устарел ли он сейчас (с середины 2010 года!), , но это может пригодиться.
Обратите внимание на комментарий Брила Паппина в блоге, демонстрирующий другой подход, который означает обновление используемой вами библиотеки Jettison.
Короче говоря, вы можете написать собственный JaxbContextResolver, который выглядит примерно так:
@Provider
@Component
public class JAXBContextResolver implements ContextResolver {
private JAXBContext context;
public JAXBContextResolver() throws Exception {
MappedBuilder builder = JSONConfiguration.mapped();
builder.arrays("invite");
builder.rootUnwrapping(true);
this.context = new JSONJAXBContext(builder.build(), Payload.class);
}
public JAXBContext getContext(Class objectType) {
return (Payload.class.equals(objectType)) ? context : null;
}
}
Для ясности, мой класс полезной нагрузки выглядел немного как
@XmlRootElement(name = "response")
@XmlAccessorType(XmlAccessType.FIELD)
public class Payload {
@XmlElement(name = "invite")
List invites;
... etc.
Относительно прекращения сериализации Джексоном свойств бина как нулевого, см. мой предыдущий ответ об использовании аннотаций для изменения этого поведения.