[英]Problem Deserializing with Jackson using JAXB annotations in Spring MVC
[英]Generate JSON using JAXB annotations,Jackson and Spring
我正在嘗試使用Spring 4實現REST服務。
該應用程序使用Java 7構建,並在Tomcat 7上運行。
REST方法將以JSON返回客戶對象。 該應用程序是注釋驅動的。
Customer類具有JAXB批注。 傑克遜罐子存在於課堂路徑中。 根據我的理解,Jackson將使用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(根據Spring 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"]}
傑克遜似乎忽略了Customer類中getFavBookList()方法上方的JAXB批注@XmlElementWrapper(name =“ booklist”)和@XmlElement(name =“ book”)
我想念什么嗎?
需要指導。 謝謝。
基本上,重點是,您已經給出了xml批注,並期望得到Json輸出。
您需要找出與其xml計數器部件@xmlElementWrapper
等效的Json。
此功能曾經在傑克遜1.x中起作用,但在傑克遜2.x中不起作用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.