JAXBを使用してオブジェクトをマーシャリングしたいのですが、問題は、ビジネスロジックに応じていくつかのフィールドのみをマーシャリングしたいということです。たとえば、次のようなオブジェクトがあります。
Class Foo{
private name;
private details;
private url;
//Getter and setter methods
}
私が達成したいのは、JSON応答を送信することです名前とURLフィールドだけで {name: "someName"、url: "myUrl"}。これにより、クライアントがより多くの情報を取得する必要がある場合、URLフィールドで送信されたURIを要求でき、JAXBは詳細フィールドをマーシャルします。 {name: "someName"、url: "myUrl"、details: "details"}。
そのためにラッパークラスを使用できることは知っていますが、同じデータのラッパークラスを書くのはちょっと面倒です。だから、いくつかのフィールドだけをマーシャルするようにJAXBを設定する方法があるのだろうかと思っていました。どうもありがとう。
回答:
回答№1は1デフォルトでは、JAXBは値を持つプロパティをマーシャリングします。これにより、目的の動作が得られます。
Foo foo = new Foo();
foo.setName("Jane Doe");
marshaller.marshal(foo, System.out); // results in <foo><name>Jane Doe</name></foo>
foo.setDetails("Some Details");
marshaller.marshal(foo, System.out); // results in <foo><name>Jane Doe</name><details>Some Details</details></foo>