¿Está bien para guardar una matriz JSON en SharedPreferences?

Tengo una matriz de JSON que necesito ahorrar. Estaba pensando en serializarlo, pero ¿sería mejor guardarlo como una cadena en SharedPreferences y luego reconstruirlo cuando necesite leerlo?

El objeto JSON en Java no implementa serialaizable fuera de la caja. He visto a otros extender la clase para permitir que, pero para su situación, simplemente recomendaría almacenar el objeto JSON como una cadena y utilizando su función toString (). He tenido éxito con esto.

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

Y para recuperarlo:

 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)

Depende del tamaño de la matriz. Suponiendo que no es ridículamente grande (menos de unos pocos cientos de Kb), sólo almacénelo a las preferencias compartidas. Si es más grande que eso, puede guardarlo en un archivo.

Guarde el JSON directamente. Míralo de esta manera: estás encapsulando la representación de datos. Si serializó un formato de objeto específico, se quedaría atascado con ese formato de objeto o tendrá que lidiar con posibles cambios en ese objeto y se preocupará por actualizar desde un formato de serialización antiguo a uno nuevo en el futuro. Guardándolo como JSON puede inflarlo como desee.

He hecho lo mismo … serializar un objeto a una cadena json y guardarlo en prefs compartidos. No hay problema, pero entiendo que en última instancia, los prefs son un archivo XML, por lo que si usted está leyendo / escribiendo mucho, no va a funcionar bien.

Sí. Los valores guardados con SharedPreferences deben ser primitivos o cadenas. ¿Qué forma tomaría el objeto JSON serializado si no es primitivo o String (o Set)? JSON es un formato de datos serializado. Úsalo, si eso es lo que ya tienes.

  • Obtener todos los nombres SharedPreferences y todas sus claves?
  • ¿Cómo escuchar los cambios de preferencia dentro de un archivo PreferenceFragment?
  • BackupManager no llama al servicio de transporte de copia de seguridad
  • Android, sharedferencias o almacenamiento interno?
  • Expectativa de puntero nulo al obtener valores de preferencia compartida
  • SharedPreferences Borrar / Guardar
  • Obtener SharedPreferences de un servicio
  • Android - SharedPreferences con objeto serializable
  • Sharedpreference con la pantalla de bienvenida
  • Android: ¿Configurar las preferencias compartidas durante la instalación?
  • Serializar un SparseArray <T> con GSON
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.