2013-06-16 2 views
5

Итак, я работаю над таким проектом http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/, который позволяет мне отображать значения моей базы данных в моем графическом интерфейсе приложений для Android.Как сохранить массив json для внутреннего хранилища android

Мне нужно сохранить значения базы данных Мне нужно внутреннее хранилище android, поэтому я могу получить к нему доступ, даже если мое приложение не подключено к серверу. Любая помощь?

Спасибо

ответ

3

Рассмотрите возможность использования локальной базы данных для кэширования данных на сервере локально, то есть, как большинство приложений делают это, здесь хороший учебник для SQLite на андроид Android SQLite

Если вы используете только один или несколько JSONObjects с сервера вы можете использовать SharedPreferences, это намного проще и быстрее для редактирования/обновления. example

Подробнее о андроида хранения: Android Storage

11

Вы можете написать целую JSON как строку в общих prefernces, а затем получить его и разобрать его, чтобы отобразить в графическом интерфейсе, даже если устройство отсутствует:

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 упрощает этот подход https://github.com/kcochibili/TinyDB--Android-Shared-Preferences-Turbo. –

1

Я работаю над приложением, которое подключается к базе php-mysql на нашем сервере, вместо сохранения результата запроса в файле, вы должны сохранить его (по крайней мере, так я считаю) на внутреннем Android-устройстве База данных (sqlite). Существует много информации о базах данных в Android.

С этой example вы можете увидеть, как легко использовать SQLite и ContentProviders (более чистый способ доступа данных, сохраненных в базе данных.

Для того, чтобы сохранить correcty в JSONArray в базе данных я рекомендую вам использовать Jackson библиотеки для создания объектов из JSON, что упрощает их сохранение.

Наконец, если объем информации относительно невелик, вы также можете использовать SharedPreferences, таким образом, доступ к данным может быть быстрее, потому что он сохраняется в мобильной памяти.

Ho pe это помогает :)

5

Если вы выбрали локальную базу данных sqlite в качестве своего решения, я написал легкую утилиту для сохранения вашего json в sqlite.

Оформить заказ git repo здесь. https://github.com/wenchaojiang/JSQL

Вам нужна только одна строка кода.

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

Надеется, что это помогает

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

Вы можете попробовать использовать с Realm.io Простым примером, как это:

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(); 

Привет !!!

Смежные вопросы