我需要爲某些對象實現JSON序列化,並且在遇到與泛型集合集成時遇到了問題。Java JSON序列化 - 最佳實踐
所有序列化的類實現這個接口(的JSONObject來自this庫):
interface JSONSerializable{
public JSONObject dump() throws JSONException //serializes object
public void load(JSONObject obj) throws JSONException //deserializes object
}
我的收藏基礎上的java.util.List看起來或多或少像這樣
代碼:
class AwesomeList<T extends JSONSerializable> implements JSONSerializable{
private LinkedList<T> items = new LinkedList<T>();
...
...
public JSONObject dump() throws JSONException {
JSONObject result = new JSONObject();
JSONArray a = new JSONArray();
for(T i : items){
a.put(i.dump());
}
result.put("items", a);
return result;
}
public void load(JSONObject obj) throws JSONException{
//here is my problem
}
}
我的問題是:當我從JSONObject加載AwesomeList時,我需要創建它的元素,但這是不可能的,因爲java禁止我寫
T newItem = new T();
newItem.load(obj);
我應該如何修改我的方法來完成這項任務?
說實話,我不明白這是如何工作甚至已知類型。您是否將類名稱存儲在JSON數據包中? – Perception
不,每個對象都知道如何從JSONObject加載它(事實上它只是關聯數組)。我更新了帖子以顯示我想要做什麼。 – KCH