xstream转换Map和List

本文地址:http://blog.csdn.net/kongxx/article/details/6946517

废话不说了,就是不想定义太多的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]]}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值