springboot使用jackson实现pojo和xml互相转换
springboot使用jackson实现pojo和xml互相转换
- 一、引入maven包
- 二、创建pojo
- 1.Java对象转XML
- 2.XML转Java对象
一、引入maven包
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
二、创建pojo
使用lombok快速创建
xml转换核心注解
@JacksonXmlElementWrapper:可以将列表数据转为XML节点。;
@JacksonXmlRootElement:指定生成xml根标签的名字;
@JacksonXmlProperty:指定包装标签名,或者指定标签内部属性名;
@JacksonXmlText:指定当前这个值,没有xml标签包裹。
package com.erfou.entity;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@JacksonXmlRootElement(localName = "xml")
public class PaylinxCallBack {
@JacksonXmlProperty(localName = "bank_type")
private String bank_type;
@JacksonXmlProperty(localName = "cash_fee")
private String cash_fee;
@JacksonXmlProperty(localName = "cash_fee_type")
private String cash_fee_type;
@JacksonXmlProperty(localName = "fee_type")
private String fee_type;
@JacksonXmlProperty(localName = "result_code")
private String result_code;
@JacksonXmlProperty(localName = "return_code")
private String return_code;
@JacksonXmlProperty(localName = "time_end")
private String time_end;
@JacksonXmlProperty(localName = "total_fee")
private String total_fee;
@JacksonXmlProperty(localName = "transaction_id")
private String transaction_id;
@JacksonXmlProperty(localName = "mch_id")
private String mch_id;
@JacksonXmlProperty(localName = "nonce_str")
private String nonce_str;
@JacksonXmlProperty(localName = "out_trade_no")
private String out_trade_no;
@JacksonXmlProperty(localName = "platform")
private String platform;
@JacksonXmlProperty(localName = "sign")
private String sign;
}
1.Java对象转XML
使用XmlMapper 的writeValueAsString方法进行转换
@GetMapping("/toxml")
public void toXml(){
PaylinxCallBack paylinxCallBack = new PaylinxCallBack();
paylinxCallBack.setSign("963852741");
XmlMapper xmlMapper = new XmlMapper();
try {
String xml = xmlMapper.writeValueAsString(paylinxCallBack);
System.out.println(xml);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
转换结果
<xml>
<bank_type/>
<cash_fee/>
<cash_fee_type/>
<fee_type/>
<result_code/
><return_code/>
<time_end/>
<total_fee/>
<transaction_id/>
<mch_id/>
<nonce_str/>
<out_trade_no/>
<platform/>
<sign>963852741</sign>
</xml>
2.XML转Java对象
使用xmlMapper.readValue进行转化
@GetMapping("/topojo")
public void toPojo() throws IOException {
String xml="<?xml version=\"1.0\"?>\n" +
"<xml>\n" +
" <bank_type><![CDATA[CFT]]></bank_type>\n" +
" <cash_fee><![CDATA[3198]]></cash_fee>\n" +
" <cash_fee_type><![CDATA[CNY]]></cash_fee_type>\n" +
" <fee_type><![CDATA[AUD]]></fee_type>\n" +
" <result_code><![CDATA[SUCCESS]]></result_code>\n" +
" <return_code><![CDATA[SUCCESS]]></return_code>\n" +
" <time_end><![CDATA[20190218175517]]></time_end>\n" +
" <total_fee><![CDATA[659]]></total_fee>\n" +
" <transaction_id><![CDATA[4200000268201902183412918770]]></transaction_id>\n" +
" <mch_id><![CDATA[1234567]]></mch_id>\n" +
" <nonce_str><![CDATA[6saqecbgail2c08kgkgd1mrdfge8i6bb]]></nonce_str>\n" +
" <out_trade_no><![CDATA[A1550523295]]></out_trade_no>\n" +
" <platform><![CDATA[wechat]]></platform>\n" +
" <sign><![CDATA[9E86F28A2C6536509A133DC085AD0203]]></sign>\n" +
"</xml>";
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.setDefaultUseWrapper(false);
xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
PaylinxCallBack paylinxCallBack=xmlMapper.readValue(xml,PaylinxCallBack.class);
System.out.println(paylinxCallBack.toString());
}
结果
PaylinxCallBack(bank_type=CFT, cash_fee=3198, cash_fee_type=CNY, fee_type=AUD, result_code=SUCCESS, return_code=SUCCESS, time_end=20190218175517, total_fee=659, transaction_id=4200000268201902183412918770, mch_id=1234567, nonce_str=6saqecbgail2c08kgkgd1mrdfge8i6bb, out_trade_no=A1550523295, platform=wechat, sign=9E86F28A2C6536509A133DC085AD0203)
还没有评论,来说两句吧...