xml转json和实体类的两种方式
本文為博主原創(chuàng),未經(jīng)允許不得轉(zhuǎn)載:
xml在http通信中具有較高的安全性和傳輸速度,所以應(yīng)用比較廣泛,
在項(xiàng)目中往往需要對(duì)xml,json和實(shí)體類進(jìn)行相互轉(zhuǎn)換,在這里總結(jié)一下自己所用到的一些方法:
一. 使用XMLSerializer 將xml轉(zhuǎn)為json格式
1.引入jar包:
<dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><classifier>jdk15</classifier></dependency>使用示例:
public static void main(String[] args) {String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"<domain xmlns:cloudcdn=\"http://cloud.chinanetcenter.com/extension/xhtml\">"+ "<domain-id>fdg68</domain-id>"+ "<domain-name>dfsg.com</domain-name>"+ "<service-type>web-https</service-type>"+ "<service-areas/>"+ "<cname>fdsgsdg.com</cname>"+ "<status>Deployed</status>"+ "<comment/>"+ "</domain>";XMLSerializer cacheXmlSerializer = new XMLSerializer();JSON referJsonResult = cacheXmlSerializer.read(xml);JSONObject referJson = JSONObject.parseObject(referJsonResult.toString());System.out.println(referJson);//運(yùn)行打印的結(jié)果為://{"domain-name":"dfsg.com","domain-id":"fdg68","service-type":"web-https","cname":"fdsgsdg.com","@xmlns:cloudcdn":"http://cloud.chinanetcenter.com/extension/xhtml","comment":[],"service-areas":[],"status":"Deployed"}}
二.通過(guò)XStream將xml轉(zhuǎn)化為實(shí)體類,
通過(guò)第一種方式也可以將xml解析為實(shí)體類,步驟為,先將xml轉(zhuǎn)為json,然后將json轉(zhuǎn)為實(shí)體類,
這里介紹的方式是通過(guò)XStream將xml轉(zhuǎn)為實(shí)體類:
XStream是個(gè)很強(qiáng)大的工具,能將java對(duì)象和xml之間相互轉(zhuǎn)化。xstream不在意java類中成員變量是私有還是公有,
也不在乎是否有默認(rèn)構(gòu)造函數(shù)。它調(diào)用方式也非常簡(jiǎn)單:從xml對(duì)象轉(zhuǎn)化為java對(duì)象,使用fromXML()方法;
從java對(duì)象序列化為xml,toXML()即可,很方便。
xstream也支持注解方式,注解方式實(shí)現(xiàn)和非注解方式實(shí)現(xiàn)的區(qū)別在于是否單獨(dú)解析別名,
如果是注解的方式,可以直接使用注解的屬性將xml字段與實(shí)體類字段進(jìn)行映射。
具體可參考:https://blog.csdn.net/dc282614966/article/details/80970750
此處展示注解式轉(zhuǎn)換的實(shí)例:
@XStreamAlias("message") 別名注解 ,作用就是將屬性按照別名輸出。
@XStreamAlias("User") public class User {@XStreamAlias("name")private String name;@XStreamAlias("age")private String age;@XStreamAlias("SEX")private String sex;public User(String name, String age, String sex) {super();this.name = name;this.age = age;this.sex = sex;}@Overridepublic String toString() {return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";} }1.xml轉(zhuǎn)換實(shí)體類的實(shí)現(xiàn)方式:
public static void main(String[] args) {String xml="<User>\n"+" <name>peter</name> \n"+" <age>13</age> \n"+" <SEX>男</SEX> \n"+" </User>";XStreamEx xStream = new XStreamEx();xStream.processAnnotations(User.class);User user = (User) xStream.fromXML(xml);}2.將實(shí)體類轉(zhuǎn)xml的方式
User user = new User();user.setName("test");// 轉(zhuǎn)換XStream xStream = new XStream();// 通過(guò)注解方式的,一定要有這句話 xStream.processAnnotations(user.getClass());String xmlCfg = xStream.toXML(user);?
轉(zhuǎn)載于:https://www.cnblogs.com/zjdxr-up/p/10665414.html
總結(jié)
以上是生活随笔為你收集整理的xml转json和实体类的两种方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【BZOJ5461】 【PKUWC201
- 下一篇: python 为空判断场景