spring boot2 (36)-xml数据的请求和响应、XmlMapper转换

虽然现在已经是json的天下,但是仍然有一些厂商接口要求xml格式。本篇将介绍如何接收和响应及转换xml格式。

pom.xml

     <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
    </dependency>

接收xml

添加以上依赖之后,spring boot会自动进行配置,之后用@RequestBody即可将请求的xml数据映射到其参数比如map中。注意:此时@RequestBody可以同时识别xml或json参数,并进行相应的解析,因为在请求时会设置body参数类型。

	@PostMapping(value="/xml")
	public Object handler(@RequestBody Map<String,String> map)

以下是postman的请求方式,注意body类型要设置为application/xml

响应xml

	@GetMapping(value="/test")
	public Object test() {
		Map xml = new HashMap();
		xml.put("key1", "value1");
		xml.put("key2", "value2");
		return xml;

使用浏览器请求,可看到以下xml响应结果。

配置标签名

上面的标签名是根据类名和相关参数名生成的,如果想设置成自己想要的名字,可以自己创建一个类,替代上面的map

@JacksonXmlRootElement(localName = "xml")	//根标签名
public class User {
	@JacksonXmlProperty(localName = "Id")	//id标签名
	private String id;
	@JacksonXmlProperty(localName = "Name")	//name标签名
	private String name;
	//省略get/set

创建这个类的实例,给其参数赋值id=1,name=tom,将其作为方法返回值,结果如下

兼容json响应类型

现在默认响应类型变成了xml,此时如果要响应json类型,有两种方法可选:

1.配置mapping的produces参数,也可直接在类上面配置,对所有方法生效。

	@GetMapping(value="/test",produces="application/json")

2.配置全局参数,扩展url后缀路径,请求时url后缀 .json表示json类型。.xml表示xml类型。

spring.mvc.contentnegotiation.favor-path-extension=true
spring.mvc.pathmatch.use-registered-suffix-pattern=true

此时请求http://localhost:8080/test.json 如下

XmlMapper实现xml和java对象互转

第30篇讲过ObjectMapper,用于json和对象的互转。XmlMapper是它的子类,用于xml和对象的互转,用法一样。

		User user = new User();
		user.setId("1");
		user.setName("tom");
		
		//创建xmlMapper对象
		XmlMapper xmlMapper = new XmlMapper();	
		//对象转xml字符串
		String xml = xmlMapper.writeValueAsString(user);
		//xml转对象
		User u = xmlMapper.readValue(xml, User.class);
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值