2011-11-15 31 views
6

我想使用XStream將java哈希轉換爲json哈希。我覺得這應該比看起來更容易。我正在尋找的是一個方法,使:Java XStream with HashMap

Map<String, String> map = new HashMap<String, String>(); 
map.put("first", "value1"); 
map.put("second", "value2"); 

成爲

{'first' : 'value1', 'second' : 'value2' } 

的關閉我把它轉換成一個系列陣列。

XStream xstream = new XStream(new JettisonMappedXmlDriver() { 
    public HierarchicalStreamWriter createWriter(Writer writer) { 
     return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE); 
    } 
}); 

xstream.toXML(map); 

成爲

[["first", "value1"], ["second", "value2"]] 

我覺得自己像一個Java哈希轉換成JSON哈希應該是直線前進。我錯過了什麼嗎?

+1

可能是你可以選擇其他的lib,請參閱http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html。 – Jason

回答

0

轉換爲jSon時,我遇到了類似的問題。我解決這個問題的方法是讓字符串在放入文件之前已經格式化爲JSon(在我的情況下是數據庫)。到目前爲止,我提出的最有效的過程就是在我的類中創建一個toJson函數,就像toString一樣工作。

例子:

對象的數據輸出字符串成JSON格式

public JsonObject toJson() 
    { 

     JsonObject temp = new JsonObject(); 
     temp.addProperty(tagName,floatData); 
     return temp; 
    } 

那麼對你來說,在填充地圖實現類似的過程轉換。

1

問題是XStream首先被設計用來將Java對象編組和解組成XML,而JSON只是一種事後考慮,它絕對是最不優雅的支持。

技術問題是由於XStream必須同時支持XML和JSON格式,所以JSON映射表示會受到影響,因爲在XML中沒有本地方式來表示類似於映射的結構。

0

你可以嘗試使用json.org的java的「官方」json庫。

呼叫:

JSONObject jsobj = new JSONObject(map); 
String strJson = jsobj.toString();