Org.json.JSONException: Objeto no terminado en el carácter 14
El mensaje de error que tengo es:
org.json.JSONException: Unterminated object at character 14 of {address: yo test}
Creo que debería escapar de la cadena, pero en vano después de probar todo el método en StackOverflow.
Aquí está mi código, muchas gracias por cualquier ayuda:
- Subida de imagen multiparte de Android con HttpConnectionParams obsoleta en nueva API
- Parse JSON con valores de ambos lados
- Obtener JSONArray sin nombre de matriz?
- ¿Cómo enviar el archivo en JSON en android?
- NoSQL DB para Android que MongoDB y CouchDB?
// src/Activity.java @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try{ String str = getString(R.string.data); JSONObject jsonObj = new JSONObject(str); } catch(Exception e){ Log.d("iLoveDrinkActivity", e.toString()); // org.json.JSONException: Unterminated object at character 14 of {address: yo test} } }
Y…
// res/strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="data">{"address": "yo test"}</string> </resources>
Si la "dirección" es algo más como "prueba" o "yo" o "123", todo funciona bien. ¡¡Gracias de nuevo!!
- Convertir JSON a objeto anidado (objeto genérico) mediante GSON
- AFNetworking para Android
- Enviar datos de android a servidor a través de JSON
- Gson, cómo deserializar matriz o cadena vacía
- ¿Cómo mostrar YouTubePlayerView en un ListView en Android?
- JSON.stringify en java - android
- Twitter JSON API en el desarrollo de Android
- Retrofit con un servicio de la vieja escuela
La única solución que puedo encontrar ( Android: Json cadena con espacios da "Unterminated objeto en" excepción ) es reemplazar las citas en su json con citas de escape
<string name="data">{"address": \"yo test\"}</string>
Aunque es molesto. Me pregunto si hay una solución mejor.
EDITAR:
Después de un poco más de excavación parece que el culpable es el método getString
que afirma
Devuelve el valor de cadena asociado con un ID de recurso particular. Se despojará de cualquier información de texto con estilo.
El despojado de texto con estilo se produce en código nativo por lo que no puedo ver por qué arroja las comillas, pero parece que sí.
Utilizar
<string name="data">{"address": \"yo test\"}</string>
De lo contrario json parser procesará la cadena {address: yo test} , que no es una cadena json válida, mientras que {address: "yo test"} es.
- Android Google Maps V2 – Tarjeta Sd como proveedor de mosaico
- ¿Cómo selecciono todo el texto al hacer clic en una vista EditarTexto?