Ho bisogno di implementare la serializzazione JSON per alcuni oggetti e ho riscontrato un problema quando si trattava di integrazione con raccolte generiche.Serializzazione Java JSON - best practice
Tutte le classi serializzabili implementare questa interfaccia (JSONObject viene da this libreria):
interface JSONSerializable{
public JSONObject dump() throws JSONException //serializes object
public void load(JSONObject obj) throws JSONException //deserializes object
}
Codice per la mia collezione sulla base di java.util.List sembra più o meno così:
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
}
}
Il mio problema è: quando carico AwesomeList da JSONObject, devo creare i suoi elementi ma è impossibile dal momento che java mi impedisce di scrivere
T newItem = new T();
newItem.load(obj);
Come dovrei modificare il mio approccio a questa attività?
Per essere onesti non vedo come questo funziona con ancora nota tipi. Stai memorizzando i nomi delle classi nel pacchetto di dati JSON? – Perception
No, ogni oggetto sa come caricarsi da JSONObject (in realtà è solo un array associativo). Ho aggiornato il post per mostrare cosa voglio fare. – KCH