怎样让xstream在生成xml时,显示null属性。如:
class Admin extends Person {
public String name;
public boolean online;
public Map mailMap = null;
public Admin(String name, boolean online, Map<String, String> mailMap) {
this.name = name;
this.online = online;
this.mailMap = mailMap;
}
public String toString() {
return super.toString() + "Admin{" +
"name=" + name +
",online=" + online +
",mailMap=" +
mailMap.toString()
+ "}";
}
}
Admin admin = new Admin("me", true, null);
XStream xs = new XStream();
System.out.println(xs.toXML(admin));
//运行结果
me
true
//其中没有mailMap属性,我想要下面的效果:
me
true
将new HashMap定义为全局的,每次都是用同一个区域就可以了。
[code="java"]Admin admin = new Admin("me", true, null); [/code]
吧null 修改为new HashMap() 看看
如果使用null,你的tostring方法就出错了
[code="java"]public String toString() {
return super.toString() + "Admin{" +
"name=" + name +
",online=" + online +
[color=red]",mailMap=" +
mailMap.toString() [/color]+ "}";
}
[/code]
XStream是序列化工具,可以让java to xml, xml to java。在序列化的时候,你可以null,但是你反序列化的过程中,XStream是无法从xml里面知道这个null到底是什么东西的?因为这个null可能是String, int, HashMap等等,所以你说的那个情况是没有办法做到的。。
不会有 的情况存在。
如果你觉得mailMap太多的话,你就写一个Const类,声明一个
[code="java"]static Map EMPTYMAP = new HashMap();[/code]
放入admin里面好了