Aufnahme von Null-Elementen in die JSON-Ausgabe der Jersey RESTful API mit JAXB

Ich habe eine Klasse, die ich über eine Jersey RESTful API aussetzen möchte. Es sieht ungefähr so ​​aus:

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

Mein Problem besteht darin, dass diese Felder möglicherweise null sind. In diesem Fall wird das Feld in der JSON-Ausgabe weggelassen. Ich möchte, dass alle Felder unabhängig von ihrem Wert vorhanden sind. Wenn lastName beispielsweise null ist, lautet die JSON-Ausgabe wie folgt:

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

anstatt was ich will:

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

Ich habe einen JAXBContextResolver (eine Implementierung von ContextResolver), der so aussieht:

<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>

Ich habe eine Weile versucht, herauszufinden, wie ich den gewünschten Output erzielen kann, aber ich hatte kein Glück. Ich bin offen, andere ContextResolver / Serializer auszuprobieren, aber ich konnte keinen finden, der funktioniert, also wären Codebeispiele nett.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage