![6b004def4c5b4b1006710649bf784353.png](https://i-blog.csdnimg.cn/blog_migrate/b10a04168b2c19f7faa2845ceeb1f3d8.jpeg)
前言
现在很多业务会基于微信公众号实现。笔者做这部分开发的时候,项目不允许再引入外部 jar 包,故做的相当蛋疼。这里是总结时写的 demo 节选。
如何将 xml 消息转换成 json 对象?
xstream
maven 依赖
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.12</version>
</dependency>
消息原型(xmlString)
<xml>
<ToUserName><![CDATA[gh_d0c6b73cc08e]]></ToUserName>
<FromUserName><![CDATA[oHOLJw-r6lBxSXU4pRDKpoDyqWI0]]></FromUserName>
<CreateTime>1587459486</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[]]></EventKey>
</xml>
对应的 java 对象
@Data
@XStreamAlias("xml")
public class XmlMessage implements Serializable {
@XStreamAlias("ToUserName")
@XStreamConverter(XStreamCDataConverter.class)
private String toUser;
@XStreamAlias("FromUserName")
@XStreamConverter(XStreamCDataConverter.class)
private String fromUser;
@XStreamAlias("CreateTime")
private Long createTime;
@XStreamAlias("MsgType")
@XStreamConverter(XStreamCDataConverter.class)
private String msgType;
@XStreamAlias("Event")
@XStreamConverter(XStreamCDataConverter.class)
private String event;
@XStreamAlias("EventKey")
@XStreamConverter(XStreamCDataConverter.class)
private String eventKey;
@XStreamAlias("Ticket")
@XStreamConverter(XStreamCDataConverter.class)
private String ticket;
@XStreamAlias("MsgID")
private Long msgId;
@XStreamAlias("Status")
@XStreamConverter(value = XStreamCDataConverter.class)
private String status;
}
public class XStreamCDataConverter extends StringConverter {
public XStreamCDataConverter() {
}
public String toString(Object obj) {
return "<![CDATA[" + super.toString(obj) + "]]>";
}
}