上一遍已对xstream进行了初步认识,此处就不再多作介绍,直入主题,以下主要主要为,JavaBean --> XML / JSON 、XML / JSON --> JavaBean之间相互转换:
一| 先写实体类:
Address.java
public class Address { private String oldAddress; private String newAddress; public String getOldAddress() { return oldAddress; } public void setOldAddress(String oldAddress) { this.oldAddress = oldAddress; } public String getNewAddress() { return newAddress; } public void setNewAddress(String newAddress) { this.newAddress = newAddress; } }
Person.java
public class Person { private String name; private String sex; private int age; private Address address; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } }
Test.java
import java.io.PrintWriter; import vo.Address; import vo.Person; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver; import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver; import com.thoughtworks.xstream.io.xml.DomDriver; /** *@class Description: *@author like *@version create on May 19, 2011 */ public class Test { public static void main(String[] args) { //JavaBean --> XML Address address=new Address(); Person person=new Person(); address.setOldAddress("湖南长沙"); address.setNewAddress("广州白云"); person.setName("理科"); person.setSex("男"); person.setAge(22); person.setAddress(address); XStream xstream = new XStream(new DomDriver()); xstream.alias("person", Person.class); xstream.alias("address", Address.class); xstream.toXML(person,new PrintWriter(System.out)); //XML --> JavaBean String strxml="<person><name>理科</name><sex>男</sex><age>19</age><address><oldAddress>湖南长沙</oldAddress><newAddress>广州白云</newAddress></address></person>"; XStream xstream2 = new XStream(new DomDriver()); xstream2.alias("person", Person.class); xstream2.alias("address", Address.class); Person person2=(Person) xstream2.fromXML(strxml); System.out.println(person2.getName()); System.out.println(person2.getSex()); System.out.println(person2.getAddress().getOldAddress()); System.out.println(person2.getAddress().getNewAddress()); //JavaBean --> JSON Address address3=new Address(); Person person3=new Person(); address3.setOldAddress("湖南长沙"); address3.setNewAddress("广州白云"); person3.setName("理科"); person3.setSex("男"); person3.setAge(22); person3.setAddress(address3); //new JsonHierarchicalStreamDriver() XStream xstream3 = new XStream(new JsonHierarchicalStreamDriver()); xstream3.alias("person", Person.class); xstream3.alias("address", Address.class); //new PrintWriter(System.out) 输出去控制台 xstream3.toXML(person3,new PrintWriter(System.out)); //JSON--> JavaBean String jsonstr="{\"person\": {\"name\": \"理科\",\"sex\": \"男\",\"age\": \"19\",\"address\": {\"oldAddress\": \"湖南长沙\",\"newAddress\": \"广州白云\"}}}"; //new JettisonMappedXmlDriver() XStream xstream4 = new XStream(new JettisonMappedXmlDriver()); xstream4.alias("person", Person.class); xstream4.alias("address", Address.class); Person person4=(Person) xstream4.fromXML(jsonstr); System.out.println(person4.getName()); System.out.println(person4.getSex()); System.out.println(person4.getAddress().getOldAddress()); System.out.println(person4.getAddress().getNewAddress()); } }
注:
1)、使用xStream.alias(String elementName, Class cls)为任何一个自定义类创建到类到元素的别名,如果不使用别名,则生成的标签名为类全名;
2)、使用xStream.toXML(Object obj)转换对象到XML;
3)、使用xStream.fromXML(String xml)转换XML到对象;