Intereting Posts
Запустить скрипт Google Apps из приложения Android? Window.innerHeight vs window.outerHeight для вычисления плотности? Проблема при чтении французского слова из текстового файла в java / android Установка приложения, но не отображаемая в Google Glass после обновления KitKat Получить токен доступа для моего приложения из GoogleApiClient в Android Как установить приложение apk с моего компьютера на мой мобильный Android SpeechRecognizer на Android Wear Android Calling Async Задача в действии Как я могу программно объединить 2 контакта в Android? Затухающий край для вертикально-прокручиваемого TextView Что означает «указанный для свойства« resDir »не существует». Как настроить Google Cloud Messaging для Android? Внедрение SIP на платформе Android 2.1 Использование setCampaignParamsOnNextHit (Android) и эквивалента iOS для пользователей атрибутов в Google Analytics Пропустили 49 кадров! Приложение может слишком много работать над своей основной нитью

Можно ли сохранить массив JSON в SharedPreferences?

У меня есть массив JSON, который мне нужно сохранить. Я думал о его сериализации, но было бы лучше сохранить его как строку в SharedPreferences, а затем перестроить, когда мне нужно его прочитать?

Объект JSON в Java не реализует сериализуемый из коробки. Я видел, как другие расширяют класс, чтобы это разрешить, но для вашей ситуации я просто рекомендовал бы хранить объект JSON в виде строки и использовать функцию toString (). У меня был успех с этим.

editor.putString("jsondata", jobj.toString()); 

И чтобы вернуть его:

 String strJson = sharedPref.getString("jsondata","0");//second parameter is necessary ie.,Value to return if this preference does not exist. if(strJson != null) JSONObject jsonData = new JSONObject(strJson); 

http://developer.android.com/reference/org/json/JSONObject.html#JSONObject(java.lang.String)

Это зависит от того, насколько велик массив. Предполагая, что это не смехотворно большой (менее нескольких сотен Кб), просто сохраните его в общих предпочтениях. Если он больше, вы можете сохранить его в файл.

Сохраните JSON напрямую. Посмотрите на это так: вы инкапсулируете представление данных. Если вы сериализовали определенный формат объекта, вы бы застряли в этом формате объекта или должны были иметь дело с возможными изменениями этого объекта и беспокоиться о том, чтобы в будущем перейти от старого формата сериализации к новому. Сохраняя его как JSON, вы можете раздуть его, как хотите.

Я сделал то же самое … сериализую объект для json-строки и сохраняю его в общих привилегиях. Нет проблем, но поймите, что в конечном итоге prefs являются XML-файлом, поэтому, если вы много читаете / пишете, он не будет работать хорошо.

Да. Значения, сохраненные с помощью SharedPreferences, должны быть примитивами или строками. Какую форму примет сериализованный объект JSON, если не примитив или String (или Set)? JSON – это сериализованный формат данных. Используйте его, если это то, что у вас уже есть.