2013-01-15 32 views
0

我正在研究一個遍佈json的服務。然而,我使用的提供商之一使用XML作爲序列化格式,所以我希望能夠使用相同的接口來解析(並吐出)JSON與該XML來自json或xml字符串的對象構造函數

問題是,我不知道一個XML類型,或允許我輕鬆重寫我的構造函數的對象。 希望能澄清我的觀點,這裏的一些代碼:

public class JsonData { 
    private Hashtable<String, Variant> map = new Hashtable<String, Variant>(); 

    public JsonData() { 
    } 

    public JsonData(String jsonString) { 
     this.deserialize(jsonString); 
    } 

理想我想第三構造做類似:

public JsonData(XMLString jsonString) { 
     this.xmldeserialize(jsonString); 
    } 

注意兩個相關的構造如何利用一個普通的字符串作爲參數。

任何指針?

+0

當你說「輕鬆地覆蓋你的構造函數」時,我不太清楚你想完成什麼?由Nikita Beloglazov提供的JsonData Factory解決方案是一種很好的方法,可以從不同類型的輸入創建相同類型的對象。我不太清楚爲什麼你有什麼似乎本質上是一個HashTable的包裝。 如果您正在尋找XML/JSON序列化/反序列化庫,我建議分別使用Castor-XML和Jackson。 –

回答

3

您可以使用靜態方法從JSON或XML字符串創建對象:

public static JsonData fromJson(String json) { 
    JsonData data = new JsonData(); 
    data.deserializeJson(json); 
    return data; 
} 

public static JsonData fromXml(String xml) { 
    JsonData data = new JsonData(); 
    data.deserializeXml(xml); 
    return data; 
} 
1

你就不能檢查,如果輸入的是JSON或XML(使用正則表達式),並調用相應的方法來反序列化。 Like

public JsonData(String jsonString) { 
    if(isValidJson(jsonString){ 
     this.deserialize(jsonString); 
    } else { 
     this.xmldeserialize(jsonString); 
    } 
} 
相關問題