JAXB Resteasy маршал желаемые поля - PullRequest
1 голос
/ 03 марта 2011

Я хотел бы упорядочить объект с помощью JAXB, проблема в том, что я хотел бы упорядочить только некоторые поля в зависимости от бизнес-логики. Например, у меня есть такой объект:

Class Foo{
private name;
private details;
private url;

//Getter and setter methods

}

Чего я хочу добиться, так это отправить ответ JSON с полем имени и URL, например {name: "someName", url: "myUrl"}, так что, когда клиентам необходимо получить дополнительную информацию, они могут запросить URI, отправленный в поле URL, и JAXB на этот раз будет маршалировать поле деталей. {Имя: "SomeName", URL: "myUrl", подробности: "подробности"}

.

Я знаю, что мог бы использовать для этого класс-оболочку, но довольно неудобно писать классы-оболочки для одних и тех же фрагментов данных. Поэтому мне было интересно, есть ли способ настроить JAXB для маршалла только для некоторых полей. Большое спасибо.

1 Ответ

1 голос
/ 03 марта 2011

По умолчанию 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>
...