官方文档 https://github.com/FasterXML/jackson-dataformat-xml/wiki/Jackson-XML-annotations 还是有点晦涩的,本文提供注解与其对应的 XML 的预览,便于理解。
典型 XML 如下:
<rootk6="6">
对应于带 Jackson 注解的 JavaBean 如下:
import java.util.*;
import com.fasterxml.jackson.dataformat.xml.annotation.*;
@JacksonXmlRootElement用于类名,注解中有localName属性,该属性如果不设置,那么生成的XML最外面就是Clazz.
@JacksonXmlCData注解是为了生成<![CDATA[text]]>
@JacksonXmlProperty注解通常可以不需要,但是如果你想要你的xml节点名字,首字母大写。比如例子中的Content,那么必须加这个注解,并且注解的localName填上你想要的节点名字。最重要的是!实体类原来的属性content必须首字母小写!否则会被识别成两个不同的属性。
有了上面的配置,在Controller返回实体类的时候,就会像转换Json一样,将实体类转换为xml对象了。有时候你的浏览器并不能识别xml,是因为你返回的content-type不是xml,可以通过修改@RequestMapping注解的produces属性来修改:
输出:
@RequestMapping(value = "/user", method = RequestMethod.GET, produces = { "application/xml" })
@ResponseBody
public User user() {
returnnew User(1L,"JE-GE");
}
提交xml,将xml请求自动转换为实体
格式化输出:
ObjectMapper mapper = new XmlMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.writeValueAsString(person);
序列化JSON:
Person person = new Person();
//设置person属性
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(person));
链接:https://www.jianshu.com/p/b6b9f8ed8cb7 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。