W tym elementy zerowe w wyjściu JSON API RESTful Jersey z JAXB

Mam klasę, którą chciałbym ujawnić poprzez API RESTful Jersey. Wygląda podobnie do tego:

<code>@XmlRootElement
public class Data {
    public String firstName;
    public String lastName;
}
</code>

Moim problemem jest to, że pola te mogą mieć wartość NULL, w którym to przypadku pole jest pominięte na wyjściu JSON. Chciałbym, aby wszystkie pola były obecne niezależnie od ich wartości. Na przykład, jeśli lastName ma wartość NULL, wyjście JSON będzie:

<code>{
   "firstName" : "Oleksi"
}
</code>

zamiast tego, co chcę:

<code>{
   "firstName" : "Oleksi",
   "lastName" : null
}
</code>

Mam JAXBContextResolver (implementację ContextResolver), który wygląda tak:

<code>@Provider
public class JAXBContextResolver implements ContextResolver<JAXBContext> {

     // internal state
    private final JAXBContext context;    
    private final Set<Class> types; 
    private final Class[] cTypes = { Data.class };


    public JAXBContextResolver() 
    throws Exception {

        types = new HashSet(Arrays.asList(cTypes));
        context = new JSONJAXBContext(JSONConfiguration.natural().humanReadableFormatting(true).build(), cTypes);
    }

    @Override
    public JAXBContext getContext(Class<?> objectType) {

        return (types.contains(objectType)) ? context : null;
    }
}
</code>

Próbowałem wymyślić, jak uzyskać pożądany efekt przez jakiś czas, ale nie miałem szczęścia. Jestem otwarty na próbowanie innych ContextResolvers / Serializers, ale nie udało mi się znaleźć takiego, który działa, więc przykłady kodu byłyby miłe.

questionAnswers(2)

yourAnswerToTheQuestion