XStream实现javabean和xml、json转化

xStream转换XML、Json数据

xStream可以轻易的将javaBean对象和xml相互转换,修改某个特定的属性和节点名称,而且也支持json的转换。

maven依赖:

1 <dependency>
2     <groupId>com.thoughtworks.xstream</groupId>
3     <artifactId>xstream</artifactId>
4     <version>1.4.5</version>
5 </dependency>

一:javaBean <-> xml

1.基本

 1 class Person {  
 2         private String name;  
 3         private int phoneNuber;  
 4         private List<Address> addresses = new ArrayList<Address>();
 5         ...
 6 }
 7 class Address {  
 8         private String street;  
 9         private int houseNo;
10         ...
11 }
12 public static String toXML(){  
13         XStream xStream = new XStream();   
14         xStream.alias("person", Person.class);  
15         xStream.alias("address",Address.class);  
16         xStream.setMode(XStream.NO_REFERENCES);  
17         xStream.addImplicitCollection(Person.class, "addresses");//去除 addresses节点生成 
18         xStream.useAttributeFor(Person.class,"name"); //name作为person节点的属性出现,即name=xxx,不设置此项的话,name作为单独的节点<name>出现
19         return xStream.toXML(person);    
20     }  
21 public static Person toEntity(String inputXML){  
22         XStream xs = new XStream();  
23         xs.alias("person",Person.class);  
24         xs.alias("address",Address.class);  
25         xs.setMode(XStream.NO_REFERENCES);  
26         xs.addImplicitCollection(Person.class,"addresses");
27         xs.useAttributeFor(Person.class, "name"); 
28         Person person = (Person)xs.fromXML(inputXML);  
29         return person;
30     } 

 2.基于annotations

//设置Person类在xml中的别名  
@XStreamAlias("person")
class Person {  
         //将name设置为XML person 元素的 attribute  
         @XStreamAsAttribute()
          private String name;  
          private int phoneNuber; 
         //将此字段名在XML中去掉  
          @XStreamImplicit()   
       private List<Address> addresses = newArrayList<Address>();
          ...
  }
  @XStreamAlias("address")
  class Address {  
          private String street;  
          private int houseNo;
         ...
 }

public static Person toEntity(String inputXML){  
        XStream xs = new XStream();    
        xs.setMode(XStream.NO_REFERENCES);    
        //注册使用了注解的bean 
        xs.processAnnotations(new Class[]{Person.class,Address.class});  
        Person person = (Person)xs.fromXML(inputXML);  
        return person;
    }  

 public static String toXML(){  
        XStream xStream = new XStream();  
        xStream.setMode(XStream.NO_REFERENCES);   
        //注册使用了注解的VO  
        xStream.processAnnotations(new Class[]{Person.class,Address.class});  
        return xStream.toXML(person);     
    }  

2.javaBean <-> json

     待完善。。。。。。。。。。。。。

原文地址:https://www.cnblogs.com/eric-fang/p/4942935.html