Я пытаюсь реализовать службу REST с использованием Spring 4.Создание JSON с помощью JAXB аннотации, Джексон и Spring
Приложение построено с использованием Java 7 и работает на Tomcat 7.
Метод REST вернется объект клиента в JSON. Приложение управляется аннотациями.
В классе Customer есть аннотации JAXB. Джексонские банки присутствуют в пути класса. Согласно моему пониманию, Джексон будет использовать аннотации JAXB для создания JSON.
Класс Заказчик:
@XmlRootElement(name = "customer")
public class Customer {
private int id;
private String name;
private List favBookList;
@XmlAttribute
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElementWrapper(name = "booklist")
@XmlElement(name="book")
public List getFavBookList() {
return favBookList;
}
public void setFavBookList(List favBookList) {
this.favBookList = favBookList;
}
}
Я аннотированный класс REST службы, как @RestController (согласно Спринг 4)
Метод REST для возврата объекта клиента в формате JSON:
@RequestMapping(value="/customer.json",produces="application/json")
public Customer getCustomerInJSON(){
Customer customerObj = new Customer();
customerObj.setId(1);
customerObj.setName("Vijay");
ArrayList<String> favBookList = new ArrayList<String>();
favBookList.add("Book1");
favBookList.add("Book2");
customerObj.setFavBookList(favBookList);
return customerObj;
}
В результате я ожидал, когда я ударил URL:
{"id":1,"booklist":{"book":["Book1","Book2"]},"name":"Vijay"}
Что я получаю:
{"id":1,"name":"Vijay","favBookList":["Book1","Book2"]}
Кажется, Джексон игнорирует JAXB аннотациями @XmlElementWrapper (имя = "Booklist") и @ XmlElement (name = "book") выше метод getFavBookList() в классе клиентов
Am I mi что-то?
Нужно руководствоваться. Благодарю.
поместить эти аннотации на объявлении переменной, и проверить – Vihar
пробовал. по-прежнему получают тот же результат. –