Android – Extraño EscapeUtil.unescapeString falla
Estoy recibiendo una falla al recibir una cadena JSON de nuestro servidor de aplicaciones. Creemos que cuando una entrada tiene "citas", hay escapes adicionales agregados.
- Android y GSON lanzando No-Args Constructor no encontrado excepción
- Cómo tomar array de json respuesta en java
- Android - problema de deserialización de json-smart
- Obtenga el objeto JSON uno por uno desde la matriz JSON en Android utilizando Retrofit y RxJava
- Pojo analiza gson con nombres de java no válidos
En android, ¿cómo puedo determinar si recibo una cadena de este tipo, y cómo puedo solucionarlo desde el lado de Android?
Aquí está nuestro procesamiento de cadena de respuesta actual:
public String processResponseString(String responseString) { if (responseString.startsWith("\"")) { responseString = responseString.substring(1, responseString.length()); } if (responseString.endsWith("\"")) { responseString = responseString.substring(0, responseString.length() - 1); } responseString = EscapeUtil.unescapeString(responseString); return responseString; }
Además, logcat no incluye toda la cadena json después del bloqueo, por lo que no puedo ver la cadena real que está causando el bloqueo.
Excepción
java.lang.ClassCastException: com.optiisolutions.housekeeping.model.OptiiAPI.OptiiError cannot be cast to java.util.Map at com.optiisolutions.housekeeping.network.OptiiHTTPClientRetroFit$2.success(OptiiHTTPClientRetroFit.java:186) at retrofit.CallbackRunnable$1.run(CallbackRunnable.java:45)
OptiiHTTPClientRetroFit.java:186
optiiClient.postRequest(event.getRequest(), new Callback<Map<String, Object>>() { @Override public void success(Map<String, Object> stringObjectMap, Response response) { Log.d(TAG, "Successful response: " + stringObjectMap.toString()); String result = (String) stringObjectMap.get(OPTII_RESULT_TYPE); String json = gson.toJson(stringObjectMap, Map.class);
- E / Volley: BasicNetwork.performRequest: Código de respuesta inesperado 307 para url
- Android devuelve cadena vacía HTTP
- Android youtube API reproduce dos o más jugadores de Youtube en una actividad principal
- Mapa Ver instrucciones de dibujo usando google Directions API - decodificar polilíneas
- Cómo leer el archivo json de la carpeta de activos cuando se prueba por Espresso?
- ¿Cómo puedo especificar la serialización con GSON?
- Cómo convertir JSONArray a ListView?
- ¿Cómo medir el tiempo de solicitud y respuesta del servidor?
Creo que usted necesita para analizar el Map
en JSON
Como el código debajo de JSONValue.
optiiClient.postRequest(event.getRequest(), new Callback<Map<String, Object>>() { @Override public void success(Map<String, Object> stringObjectMap, Response response) { Log.d(TAG, "Successful response: " + stringObjectMap.toString()); // For JsonValue you need to add one jar file . String json= JSONValue.toJSONString(stringObjectMap); Log.d(TAG, "Successful json: " + json); }
Necesita agregar jar javax.json-1.0.2.jar
en dependencias de gradle
dependencies { compile files('libs/javax.json-1.0.2.jar') }
Descargar javax.json-1.0.2.jar
Descargar desde abajo enlace:
http://www.java2s.com/Code/Jar/j/Downloadjavaxjson102jar.htm
Intenté replicar tu cadena. Supongo que quieres mantener las cotizaciones. Podría resolverlo con este simple algoritmo, espero que funcione para usted:
public static String process(String s){ String sep = "\\\\"; String[] arr = s.split(sep); StringBuilder sb = new StringBuilder(); for(String str : arr){ sb.append(str); } return sb.toString(); }
- Uso de la cancelación acústica incorporada de eco de Android
- La aplicación publicada no se actualiza en la tienda de juegos