2012-09-25 141 views
3

我有一個對象,我想序列化爲JSON。該對象是包含特定對象列表的地圖。這看起來類似於:如何序列化Map <String,List <Object>>與FlexJSON

Map<String, List<Object>> map = new Map<String, List<Object>>(); 

我正在使用FlexJSON。我只能用flexjson.JSONSerializer工作。有我的嘗試:

JSONSerializer jsonSerializer = new JSONSerializer(); 
//  jsonSerializer.include("map"); 
//  jsonSerializer.include("map.myList.object"); 
jsonSerializer.transform(new MapTransformer(), "map"); 
jsonSerializer.exclude("*.class"); 

正如你可以看到我現在想用Transformer類,但我還沒有成功。正如我所想,如果我的List<Object>具有自己的名稱,例如myList,則評論行將起作用。但它並沒有自己的名字,因爲它是我地圖的values

如何使用FlexJSON將此類對象序列化爲JSON?

回答

4

Quoi是正確的,並且很可能是您想要使用的答案。但是,僅僅這樣你就可以瞭解它是如何運作的,你可以這樣做:

new JSONSerializer().include("values.values").serialize(myMap); 

地圖和列表的容器並有其中包含的元素獨特的表達。當你想談談容器值的路徑時,你需要在路徑中使用「values」表達式。映射的兩個特殊表達式「鍵」和「值」。其他收藏有「價值」。

另一種選擇是使用通配符,像這樣:

new JSONSerializer().include("values.*").serialize(myMap); 

你可以看到Quoi的答案使用,也排除類屬性通配符。

+0

在我的情況下,通配符是最好的選擇。正如我所提到的,我只能操作'flexjson.JSONSerializer'對象。 – woyaru

+0

我對'Map '做了這個嘗試,有和沒有'include(「values」)',但json的結果是一樣的;在使用'「values」'時,我期待在json中看到地圖中不同的'Object'類型的類類型數據? – raffian

3

嘗試

String jsonString = new JSONSerializer().exclude("*.class").deepSerialize(map); 

deepSerialize方法執行目標實例的深序列化。它將默認包含所有集合,地圖和數組,因此包含將被忽略,除非您想包含被註釋排除的內容。

相關問題