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.

Escapes dobles ??

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); 

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(); } 
  • No puedo recuperar JSONArray desde el servidor IP, pero puedo desde el servidor normal?
  • Publicar un servicio JSONArray en WCF desde android
  • No se puede deserializar la instancia de java.lang.String fuera de START_ARRAY
  • Conversión no verificada
  • JSON problema de análisis no resuelto
  • Acceder a un objeto JSON dentro de otro objeto JSON
  • Almacenamiento de datos en línea ANDROID
  • Cómo actualizar el PNR Capcha añadido en el Indian Railways Site
  • Conversión de imagen de Base64 en android resultando en imagen dañada
  • Retrofit 2: enviar archivos con el objeto json
  • Conectar aplicaciones de Android a la base de datos mysql
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.