用的還是之前的我做JSON工具類測試的那幾個object類,看看XSTREAM都產生些什麼垃圾代碼吧 :import java.util.HashMap;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
public class Test ...{
public static void main(String[] args) throws Exception...{
CObj cObj = new CObj();
XStream xStream2 = new XStream(new JettisonMappedXmlDriver());
HashMap testMap = new HashMap();
testMap.put("obj1", cObj);
testMap.put("obj2", cObj);
System.out.println(xStream2.toXML(testMap));
}
}
輸出:
{"map":{"entry":[{"string":"obj1","CObj":{"oarray":{"int":"352","boolean":"false","string":"kick"},"ii":"7","bb":"true","ss":"你好","aList":{"string":"hello","boolean":"false","BObj":{"innerhm":{"entry":[{"string":"sina","big-decimal":"7.4353999999999995651478457148186862468719482421875"},{"string":["gigi","高興"]}]},"map":""}}}},{"string":"obj2","CObj":{"@reference":"..//..//entry//CObj"}}]}}
BUG1:產生的reference這個有個屁用,只有xstream自己知道(反向產生Object)
BUG2:有必要把HashMap產生得這麼複雜嗎?對於JSON來說,我需要的HashMap的key肯定是String,沒必要來個{"string":"obj2"}這麼麻煩的key定義,我需要的是像obj2: {}這樣的直接。
看來用xstream來產生json還是很不方便的,功能有限,垃圾資料太多。