前言:對于服務器后端開發(fā),接口返回的數(shù)據(jù)格式一般要求都是json,但是也有使用xml格式
創(chuàng)新互聯(lián)專注于網(wǎng)站建設,為客戶提供網(wǎng)站建設、成都做網(wǎng)站、網(wǎng)頁設計開發(fā)服務,多年建網(wǎng)站服務經(jīng)驗,各類網(wǎng)站都可以開發(fā),品牌網(wǎng)站建設,公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設計,建網(wǎng)站費用,建網(wǎng)站多少錢,價格優(yōu)惠,收費合理。RequestBody注解
對于SpringMVC,很多人會認為接口方法使用@Controller搭配@ResponseBody和@RequestMapping注解后,java對象會轉(zhuǎn)換成json格式返回。
但實際上配合@ResponseBody注解后,接口返回的數(shù)據(jù)類型是根據(jù)HTTP Request Header中的Accept屬性來確定的,可以是XML或者JSON數(shù)據(jù)
通過適當?shù)腍ttpMessageConverter對java對象進行格式轉(zhuǎn)換,常用的有:
ByteArrayHttpMessageConverter
負責讀取二進制格式的數(shù)據(jù)和寫出二進制格式的數(shù)據(jù);
StringHttpMessageConverter
負責讀取字符串格式的數(shù)據(jù)和寫出二進制格式的數(shù)據(jù);
ResourceHttpMessageConverter
負責讀取資源文件和寫出資源文件數(shù)據(jù);
FormHttpMessageConverter
負責讀取form提交的數(shù)據(jù);
MappingJacksonHttpMessageConverter
負責讀取和寫入json格式的數(shù)據(jù);
SouceHttpMessageConverter
負責讀取和寫入 xml 中javax.xml.transform.Source定義的數(shù)據(jù);
Jaxb2RootElementHttpMessageConverter
負責讀取和寫入xml 標簽格式的數(shù)據(jù);
AtomFeedHttpMessageConverter
負責讀取和寫入Atom格式的數(shù)據(jù);
RssChannelHttpMessageConverter
負責讀取和寫入RSS格式的數(shù)據(jù)
具體使用哪個怎么判斷這里就不細講了,我們關心的是Jaxb2RootElementHttpMessageConverter這個方法,后面會講為啥會提
java對象與xml之間互相轉(zhuǎn)換
使用Java自帶注解的方式實現(xiàn)(@XmlRootElement,@XmlAccessorType,@XmlElement,@XmlAttribute),具體使用方法網(wǎng)上有很多
這里直接代碼舉例
import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlRootElement(name = "city") @XmlType(propOrder = { "name","province"}) public class City { private String name; private String province; public City() { } public City(String name, String province) { this.name = name; this.province = province; } public String getName() { return name; } @XmlElement public void setName(String name) { this.name = name; } public String getProvince() { return province; } @XmlElement public void setProvince(String province) { this.province = province; } }