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.