2013-06-16 13 views
5

Quindi sto lavorando a un progetto come questo http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/ che consenta di visualizzare i valori del mio database nella GUI dell'applicazione Android.come salvare json array nella memoria interna di Android

Ho bisogno di salvare i valori del database che ho bisogno per l'archiviazione interna di Android in modo da poter accedere anche se la mia applicazione non è collegata al server. Qualsiasi aiuto?

Grazie

risposta

3

considerare l'utilizzo di un database locale per memorizzare nella cache i dati del server a livello locale, è così che la maggior parte delle applicazioni lo fa, ecco un buon tutorial per SQLite su Android Android SQLite

Se si utilizza solo uno o pochi JSONObjects dal server è possibile utilizzare SharedPreferences, è molto più facile e veloce da modificare/aggiornare. example

Per di più su stoccaggio Android: Android Storage

11

È possibile scrivere tutta JSON come stringa in prefernces condivise, e quindi ottenere e analizzarlo per visualizzare in GUI anche quando il dispositivo è collegato:

String str = json.toString(); 
SharedPreferences sharedPref = getSharedPreferences("appData", Context.MODE_WORLD_WRITEABLE); 
SharedPreferences.Editor prefEditor = getSharedPreferences("appData", Context.MODE_WORLD_WRITEABLE).edit(); 
prefEditor.putString("json", str); 
prefEditor.commit(); 
+0

TinyDB semplifica questo approccio https://github.com/kcochibili/TinyDB--Android-Shared-Preferences-Turbo. –

1

Sto lavorando ad un'applicazione che si connette ad un database php-mysql nel nostro server, invece di salvare il risultato della query in un file, dovresti salvarlo (almeno questo è quello che penso io) in un Android interno Database (sqlite). Ci sono molte informazioni sui database in Android.

Con questo example si può vedere come utilizzare facilmente SQLite e ContentProviders (un modo più pulito di accesso ai dati salvati nel database.

Al fine di risparmiare correcty un JSONArray nel database vi consiglio di usare Jackson librerie per creare oggetti da JSON rendendoli più facili da salvare

Infine, se la quantità di informazioni è relativamente piccola, è possibile utilizzare anche SharedPreferences, in questo modo è possibile accedere ai dati più rapidamente perché salvati nella memoria mobile.

Ho pe it helps :)

5

Se si è scelto il database sqlite locale come soluzione, ho scritto un'utilità leggera per salvare il tuo json in un sqlite.

checkout git repo qui. https://github.com/wenchaojiang/JSQL

È necessaria solo una riga di codice.

new JSQLite(yourJsonString, yourDB).persist(); 

Speranza che aiuta

1
//if you have already the json string 
    String str = json.toString(); 

    //if you want to convert list to json (with Gson): 
    //foo - will be your list 
    String str = new Gson().toJson(foo); 

    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
    SharedPreferences.Editor prefEditor = sharedPref.edit(); 
    prefEditor.putString("pref_json_key", str); 
    prefEditor.apply(); 
2

Si può provare a utilizzare con Realm.io Un semplice esempio come questo:

public class City extends RealmObject { 
    private String city; 
    private int id; 
    // getters and setters left out ... 
} 

// Insert from a string 
realm.beginTransaction(); 
realm.createObjectFromJson(City.class, "{ city: \"Copenhagen\", id: 1 }"); 
realm.commitTransaction(); 

Saluti !!!

Problemi correlati