Sto facendo un'applicazione Android che legge diversi file JSON e inserisce le informazioni di lettura in tabelle nel mio database. Ad esempio, ci sono tre file:
-
countries.json
{ "countries": [ { "name": "United States", "org_ids": [ { "id": 1 }, { "id": 2 }, { "id": 3 } ] }, { "name": "China", "org_ids": [ { "id": 1 }, { "id": 2 } ] }, { "name": "Hong Kong", "org_ids": [ { "id": 3 }, { "id": 4 }, { "id": 5 } ] } ] }
-
orgs.json
{ "orgs": [ { "id": 1, "name": "UNO" }, { "id": 2, "name": "Organization of American States" }, { "id": 3, "name": "INTERPOL" }, { "id": 4, "name": "European Union" }, { "id": 5, "name": "The Commonwealth of Nations" } ] }
-
continents.json
{ "continents": [ { "id": 1, "name": "Africa" }, { "id": 2, "name": "North America" }, { "id": 3, "name": "South America" }, { "id": 4, "name": "Asia" }, { "id": 5, "name": "Europe" }, { "id": 6, "name": "Australia" } ] }
Per favore non prestare attenzione ai contenuti dei miei JSON, essi non contengono membri reali delle organizzazioni internazionali elencate. È solo un esempio.
Vedo due modi.
THE EXWAY.
Archivia ogni paese con i suoi dati in un'istanza di classe e definisci SparseArray
contiene un ID paese come chiave e un oggetto CountryInfo
come valore.
/** Each item contains country's ID (key) and respective data (value) */
private SparseArray<CountryInfo> mCountriesInfo = new SparseArray<JsonParser.CountryInfo>();
Dopo aver letto tutto dai file, i dati di SparseArray
verranno inseriti nel database.
private class CountryInfo {
String mCountryName;
int continentId;
String mContinentName;
/** Contains IDs (keys) and names (values) of organizations */
SparseArray<String> mOrgNames = new SparseArray<String>();
}
Inconvenienti.
- Più JSONS (o JSON più complessi) più complessa è la classe per la conservazione.
- Duplicazione dati
Vantaggi
- La lettura e l'inserimento non dipendono l'uno dall'altro.
THE LATTER WAY.
Leggi e inserisci senza salvataggio preliminare.
Inconvenienti.
- La logica del database e la logica di lettura sono miste.
Vantaggi.
- Nessuna classe aggiuntiva.
- Nessuna duplicazione dei dati.
Quale è una pratica migliore?