首先,我有一個非常簡單的java bean它可以輕鬆地序列化到JSON:如何使用google-gson將這種自定義類型序列化爲json?
class Node {
private String text;
// getter and setter
}
Node node = new Node();
node.setText("Hello");
String json = new Gson().toJson(node);
// json is { text: "Hello" }
然後,爲了使這種豆有一定的動態值,所以我創建了一個「WithData」基類:
Class WithData {
private Map<String, Object> map = new HashMap<String, Object>();
public void setData(String key, Object value) { map.put(key, value); }
public Object getData(String key) = { return map.get(key); }
}
class Node extends WithData {
private String text;
// getter and setter
}
現在我可以設置更多的數據節點:
Node node = new Node();
node.setText("Hello");
node.setData("to", "The world");
但GSON會忽略「來」,結果仍是{ text: "Hello" }
。我希望它是:{ text: "Hello", to: "The world" }
有什麼辦法編寫WithData
型串行,所有的類來擴展它不僅會產生自己的屬性,以JSON,而且數據在map
?
我試圖實現一個自定義的序列化程序,但失敗了,因爲我不知道如何讓Gson首先序列化屬性,然後是map中的數據。
您是否嘗試將您的地圖字段公開? – 2011-12-20 08:33:57
這沒有幫助,我希望地圖的鍵將是json的鍵 – Freewind 2011-12-20 08:37:03