Conversión de cadena a json objeto android

Estoy trabajando en una aplicación de Android. En mi aplicación tengo que convertir una cadena de objetos Json, a continuación, analizar los valores. Comprobé una solución en stackoverflow y encontré un problema similar aquí enlace

La solución es así

`{"phonetype":"N95","cat":"WP"}` JSONObject jsonObj = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}"); 

Utilizo la misma manera en mi código. Mi cadena es

 {"ApiInfo":{"description":"userDetails","status":"success"},"userDetails":{"Name":"somename","userName":"value"},"pendingPushDetails":[]} string mystring= mystring.replace("\"", "\\\""); 

Y después de reemplazar obtuve el resultado como este

 {\"ApiInfo\":{\"description\":\"userDetails\",\"status\":\"success\"},\"userDetails\":{\"Name\":\"Sarath Babu\",\"userName\":\"sarath.babu.sarath babu\",\"Token\":\"ZIhvXsZlKCNL6Xj9OPIOOz3FlGta9g\",\"userId\":\"118\"},\"pendingPushDetails\":[]} 

Cuando ejecuto JSONObject jsonObj = new JSONObject(mybizData);

Estoy recibiendo la siguiente excepción json

 org.json.JSONException: Expected literal value at character 1 of 

Por favor, ayúdame a resolver mi problema.

Quite las barras:

 String json = {"phonetype":"N95","cat":"WP"}; try { JSONObject obj = new JSONObject(json); Log.d("My App", obj.toString()); } catch (Throwable t) { Log.e("My App", "Could not parse malformed JSON: \"" + json + "\""); } 

prueba esto:

 String json = "{'phonetype':'N95','cat':'WP'}"; 

es trabajo

  String json = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}"; try { JSONObject obj = new JSONObject(json); Log.d("My App", obj.toString()); Log.d("phonetype value ", obj.getString("phonetype")); } catch (Throwable tx) { Log.e("My App", "Could not parse malformed JSON: \"" + json + "\""); } 

Para obtener un JSONObject o JSONArray de una cadena He creado esta clase:

 public static class JSON { public Object obj = null; public boolean isJsonArray = false; JSON(Object obj, boolean isJsonArray){ this.obj = obj; this.isJsonArray = isJsonArray; } } 

Aquí para obtener el JSON:

 public static JSON fromStringToJSON(String jsonString){ boolean isJsonArray = false; Object obj = null; try { JSONArray jsonArray = new JSONArray(jsonString); Log.d("JSON", jsonArray.toString()); obj = jsonArray; isJsonArray = true; } catch (Throwable t) { Log.e("JSON", "Malformed JSON: \"" + jsonString + "\""); } if (object == null) { try { JSONObject jsonObject = new JSONObject(jsonString); Log.d("JSON", jsonObject.toString()); obj = jsonObject; isJsonArray = false; } catch (Throwable t) { Log.e("JSON", "Malformed JSON: \"" + jsonString + "\""); } } return new JSON(obj, isJsonArray); } 

Ejemplo:

 JSON json = fromStringToJSON("{\"message\":\"ciao\"}"); if (json.obj != null) { // If the String is a JSON array if (json.isJsonArray) { JSONArray jsonArray = (JSONArray) json.obj; } // If it's a JSON object else { JSONObject jsonObject = (JSONObject) json.obj; } } 

Aquí está el código, y usted puede decidir qué
(Sincronizado) StringBuffer o StringBuilder más rápido para usar.

Benchmark muestra que StringBuilder es más rápido.

 public class Main { int times = 777; long t; { StringBuffer sb = new StringBuffer(); t = System.currentTimeMillis(); for (int i = times; i --> 0 ;) { sb.append(""); getJSONFromStringBuffer(String stringJSON); } System.out.println(System.currentTimeMillis() - t); } { StringBuilder sb = new StringBuilder(); t = System.currentTimeMillis(); for (int i = times; i --> 0 ;) { getJSONFromStringBUilder(String stringJSON); sb.append(""); } System.out.println(System.currentTimeMillis() - t); } private String getJSONFromStringBUilder(String stringJSONArray) throws JSONException { return new StringBuffer( new JSONArray(stringJSONArray).getJSONObject(0).getString("phonetype")) .append(" ") .append( new JSONArray(employeeID).getJSONObject(0).getString("cat")) .toString(); } private String getJSONFromStringBuffer(String stringJSONArray) throws JSONException { return new StringBuffer( new JSONArray(stringJSONArray).getJSONObject(0).getString("phonetype")) .append(" ") .append( new JSONArray(employeeID).getJSONObject(0).getString("cat")) .toString(); } } 
  • Recuperación de datos de firebase
  • JSONException: El valor del tipo java.lang.String no se puede convertir en JSONObject
  • Saltos de línea con WCF, JSON y un cliente que no sea Windows
  • Android - ¿cómo agregar el objeto JSON a sharedPreferences?
  • Google Place API - autocompletar - cómo obtener código postal?
  • Lazy descargar imágenes en gridView
  • ¿Cómo puedo analizar JSON desde un Java HTTPResponse?
  • ¿Cómo usar HTTPS y HTTP para analizar datos JSON en Android?
  • ¿Cómo recuperar datos de la base de datos de firebase que está teniendo matriz anidada y estructura de objetos?
  • Convertir JSONArray a Array de cadenas
  • JacksonParser databind y la causa principal "Encontró archivo duplicado para APK"?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.