gpt4 book ai didi

java - 使用 JAXB 注释、Jackson 和 Spring 生成 JSON

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:06 25 4
gpt4 key购买 nike

我正在尝试使用 Spring 4 实现 REST 服务。

该应用程序使用 Java 7 构建并在 Tomcat 7 上运行。

REST 方法将返回 JSON 格式的客户对象。该应用程序是注释驱动的。

Customer 类具有 JAXB 注释。Jackson jars 存在于类路径中。据我了解 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)

以 JSON 格式返回客户对象的 REST 方法:

@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"]}

Jackson 似乎忽略了 JAXB 注释 @XmlElementWrapper(name = "booklist")@XmlElement(name="book") 位于 Customer 类中的 getFavBookList() 方法上方

我错过了什么吗?

需要指导。谢谢。

最佳答案

基本上,重点是,您已经给出了 xml 注释并期待 Json 输出。

您需要找出其 xml 对应部分 @xmlElementWrapper 的 Json 等效项。

此功能过去在 Jackson 1.x 中有效,但在 Jackson 2.x 中无效

关于java - 使用 JAXB 注释、Jackson 和 Spring 生成 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28318708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com