Jersey RESTful APIを通じて公開したいクラスがあります。それは次のようになります。JAXBを使用したJersey RESTful APIのJSON出力にヌル要素を含む
@XmlRootElement
public class Data {
public String firstName;
public String lastName;
}
私の問題は、フィールドがJSON出力から省略された場合には、これらのフィールドがnullになることもあるということです。私はすべてのフィールドがその価値に関係なく存在することを望みます。 lastNameのがnullの場合、例えば、JSONの出力は次のようになります。代わりに私が何をしたいの
{
"firstName" : "Oleksi"
}
:
{
"firstName" : "Oleksi",
"lastName" : null
}
私はこのようになりますJAXBContextResolver(ContextResolverの実装)があります
を@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;
}
}
私はその出力をしばらく取得する方法を見つけようとしていましたが、運がなかったのです。私は他のContextResolvers /シリアライザを試してみたいと思っていますが、動作するものを見つけることができませんでしたので、コード例がうまくいくはずです。
私はこれを試しましたが、うまく動作しません。上記以外のコード変更が必要な場合は、詳細をお知らせください。たとえば、JAXBContextResolverクラスを変更する必要がありますか? – Oleksi
私はこのプロジェクトに必要な依存関係をダウンロードすることも困難でした。この文書を無駄に見てみました。 http://wiki.eclipse.org/EclipseLink/Maven – Oleksi
ここにpom.xmlの例を示します。https://github.com/bdoughan/blog20110819/blob/master/pom。xml –