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

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

Solutions Collecting From Web of "Можно ли сохранить массив 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 – это сериализованный формат данных. Используйте его, если это то, что у вас уже есть.