Android – ¿cómo agregar el objeto JSON a sharedPreferences?
Me gustaría agregar datos en el objeto JSON existente y guardar datos como cadena en preferencias compartidas con la siguiente estructura.
"results":[ { "lat":"value", "lon":"value" }, { "lat":"value", "lon":"value" } ]
¿Cómo puedo hacerlo bien?
- Servidor ByetHost que pasa valores html "Comprobación de su navegador" con JSON String
- Cómo obtener la cadena subyacente de un JsonParser (Jackson Json)
- Google Plus SignIn / oAuth2 - lanzamiento del lado del servidor TokenResponseException: 401 no autorizado
- Hacer formas dinámicas (el mejor enfoque)
- Cómo agregar json al cuerpo de una publicación http en java
He intentado algo como esto, pero sin suerte.
// get stored JSON object with saved positions String jsonDataString = this.getSharedPreferencesStringValue(ctx, "positions", "last_positions"); if (jsonDataString != null) { Log.i(AppHelper.APP_LOG_NAMESPACE, "JSON DATA " + jsonDataString); JSONObject jsonData = new JSONObject(jsonDataString); jsonData.put("lat", lat.toString()); jsonData.put("lon", lon.toString()); jsonData.put("city", city); jsonData.put("street", street); jsonData.put("date", appHelper.getActualDateTime()); jsonData.put("time", appHelper.getActualDateTime()); this.setSharedPreferencesStringValue(ctx, "positions", "last_positions", jsonData.toString()); } else { this.setSharedPreferencesStringValue(ctx, "positions", "last_positions","{}"); }
Gracias por cualquier consejo.
- Cómo obtener datos del objeto Json?
- Cómo obtener malformado JSON en Retrofit 2
- Obtener el nombre de la clave jsonarray
- ¿En qué formato (HTML / markdown / JSON) debo recibir algún texto formateado de mi servidor?
- Volley JSONException: Fin de la entrada en el carácter 0 de
- ¿Cuál es la forma estándar de publicar el objeto JSON junto con el archivo utilizando MultipartEntityBuilder y el cliente HTTP en Android
- ¿Cómo puedo analizar JSON desde un Java HTTPResponse?
- Cursor de Android a JSONArray
Creo que la manera más fácil de lograr eso sería usar Gson .
Si utiliza gradle, puede agregarlo a sus dependencias
compile 'com.google.code.gson:gson:2.2.4'
Para usarlo es necesario definir clases para los objetos que se deben cargar. En su caso sería algo como esto:
// file MyObject.java public class MyObject { List<Coord> results = new ArrayList<Coord>(); public static class Coord { public double lat; public double lon; }
A continuación, sólo tiene que usar para ir a / desde Json siempre que lo necesite:
String jsonDataString = this.getSharedPreferencesStringValue(ctx, "positions", "last_positions"); Gson gson = new Gson(); MyObject obj = gson.fromJson(jsonDataString, MyObject.class); // Noew obj contains your JSON data, so you can manipulate it at your will. Coord newCoord = new Coord(); newCoord.lat = 34.66; newCoord.lon = -4.567; obj.results.add(newCoord); String newJsonString = gson.toJson(obj);
SharedPreferences sólo puede almacenar tipo básico, como String, entero, largo, … por lo que no puede utilizarlo para almacenar objetos. Sin embargo, puede almacenar la cadena Json, utilizando sharedPreferences.putString()
- Android cómo iniciar la actividad en Boot-up
- Barra de herramientas ActionMode fondo pre Lollipop no funciona