您的位置:首页 > 其它

xstream转换Map和List

2019-04-27 11:42 134 查看
               

本文地址:https://www.geek-share.com/detail/2531712321.html

废话不说了,就是不想定义太多的java bean,有时候需求比较简单,就想着直接用java的集合类来替换太多的java bean定义,看下面的代码例子

package org.garbagecan.xstreamstudy.converter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.io.xml.DomDriver;public class TestMapListConverter { @SuppressWarnings({ "rawtypes", "unchecked" }) public static void main(String[] args) {  XStream xstream = new XStream(new DomDriver());  Map map = new HashMap();    List list1 = new ArrayList();  list1.add(new T("a1", "b1", "c1"));  list1.add(new T("a2", "b2", "c2"));  List list2 = new ArrayList();  list2.add(new T("a3", "b3", "c3"));  list2.add(new T("a4", "b4", "c4"));  map.put("t1", list1);  map.put("t2", list2);    xstream.alias("classes", Map.class);  xstream.alias("class", Map.Entry.class);  xstream.alias("name", String.class);    xstream.alias("fields", List.class);  xstream.alias("field", T.class);  xstream.aliasAttribute(T.class, "a", "a");  xstream.aliasAttribute(T.class, "b", "b");  xstream.aliasAttribute(T.class, "c", "c");    System.out.println(xstream.toXML(map));  System.out.println((Map)xstream.fromXML(xstream.toXML(map))); }}class T { public T(String a, String b, String c) {  this.a = a;  this.b = b;  this.c = c; } private String a; private String b; private String c; public String getA() {  return a; } public void setA(String a) {  this.a = a; } public String getB() {  return b; } public void setB(String b) {  this.b = b; } public String getC() {  return c; } public void setC(String c) {  this.c = c; } @Override public String toString() {  return org.apache.commons.lang.builder.ToStringBuilder.reflectionToString(this); }}
运行上面的例子得到的xml内如如下:

<classes>  <class>    <name>t2</name>    <fields>      <field a="a3" b="b3" c="c3"/>      <field a="a4" b="b4" c="c4"/>    </fields>  </class>  <class>    <name>t1</name>    <fields>      <field a="a1" b="b1" c="c1"/>      <field a="a2" b="b2" c="c2"/>    </fields>  </class></classes>
得到的java对象内容如下:

{t2=[org.garbagecan.xstreamstudy.converter.T@b166b5[a=a3,b=b3,c=c3], org.garbagecan.xstreamstudy.converter.T@1837697[a=a4,b=b4,c=c4]], t1=[org.garbagecan.xstreamstudy.converter.T@1decdec[a=a1,b=b1,c=c1], org.garbagecan.xstreamstudy.converter.T@a1807c[a=a2,b=b2,c=c2]]}



           
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: