歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> xstream轉換Map和List

xstream轉換Map和List

日期:2017/3/1 10:36:01   编辑:Linux編程

廢話不說了,就是不想定義太多的java bean,有時候需求比較簡單,就想著直接用java的集合類來替換太多的java bean定義,看下面的代碼例子

[java]
  1. package org.garbagecan.xstreamstudy.converter;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import com.thoughtworks.xstream.XStream;
  7. import com.thoughtworks.xstream.io.xml.DomDriver;
  8. public class TestMapListConverter {
  9. @SuppressWarnings({ "rawtypes", "unchecked" })
  10. public static void main(String[] args) {
  11. XStream xstream = new XStream(new DomDriver());
  12. Map map = new HashMap();
  13. List list1 = new ArrayList();
  14. list1.add(new T("a1", "b1", "c1"));
  15. list1.add(new T("a2", "b2", "c2"));
  16. List list2 = new ArrayList();
  17. list2.add(new T("a3", "b3", "c3"));
  18. list2.add(new T("a4", "b4", "c4"));
  19. map.put("t1", list1);
  20. map.put("t2", list2);
  21. xstream.alias("classes", Map.class);
  22. xstream.alias("class", Map.Entry.class);
  23. xstream.alias("name", String.class);
  24. xstream.alias("fields", List.class);
  25. xstream.alias("field", T.class);
  26. xstream.aliasAttribute(T.class, "a", "a");
  27. xstream.aliasAttribute(T.class, "b", "b");
  28. xstream.aliasAttribute(T.class, "c", "c");
  29. System.out.println(xstream.toXML(map));
  30. System.out.println((Map)xstream.fromXML(xstream.toXML(map)));
  31. }
  32. }
  33. class T {
  34. public T(String a, String b, String c) {
  35. this.a = a;
  36. this.b = b;
  37. this.c = c;
  38. }
  39. private String a;
  40. private String b;
  41. private String c;
  42. public String getA() {
  43. return a;
  44. }
  45. public void setA(String a) {
  46. this.a = a;
  47. }
  48. public String getB() {
  49. return b;
  50. }
  51. public void setB(String b) {
  52. this.b = b;
  53. }
  54. public String getC() {
  55. return c;
  56. }
  57. public void setC(String c) {
  58. this.c = c;
  59. }
  60. @Override
  61. public String toString() {
  62. return org.apache.commons.lang.builder.ToStringBuilder.reflectionToString(this);
  63. }
  64. }

運行上面的例子得到的xml內如如下:

[html]
  1. <classes>
  2. <class>
  3. <name>t2</name>
  4. <fields>
  5. <field a="a3" b="b3" c="c3"/>
  6. <field a="a4" b="b4" c="c4"/>
  7. </fields>
  8. </class>
  9. <class>
  10. <name>t1</name>
  11. <fields>
  12. <field a="a1" b="b1" c="c1"/>
  13. <field a="a2" b="b2" c="c2"/>
  14. </fields>
  15. </class>
  16. </classes>
得到的java對象內容如下:

[java]
  1. {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]]}
Copyright © Linux教程網 All Rights Reserved