/ / JAXB Resteasyマーシャルの望ましいフィールド-jaxb、marshalling、resteasy

JAXB restaasy marshallの希望するフィールド - jaxb、マーシャリング、resteasy

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>