Org.json.JSONObject no se puede convertir en JSONArray
Estoy recibiendo una excepción mientras trabajaba en json. Mi clase JSONPresr es la siguiente
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONException; import org.json.JSONObject; import android.os.AsyncTask; import android.util.Log; public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // constructor public JSONParser() { } public JSONObject getJSONFromUrl(String url) { // Making HTTP request try { // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "UTF-8"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); System.out.println(" value in json sting"+json); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); Log.e("JSON Parser", "Error parsing data [" + e.getMessage()+"] "+json); System.out.println(" error is here"); } // return JSON String return jObj; } }
Estoy recibiendo mis datos por este código
- Alternativa del método Jsoup.parse ()
- JSON Parsing funciona en Android 4.0 pero no en Android <4.0
- Cómo analizar 2013-03-13T20: 59: 31 + 0000 cadena de fecha hasta la fecha
- GSON evitar el JsonSyntaxException devolver el mapeo parcial
- Cargando JSON de String en JSONArray en Android
String TAG_user_detail = "user_details"; String TAG_user_id = "user_id"; String TAG_user_name = "user_name"; String TAG_user_phone = "user_phone"; String TAG_ref_id = "ref_id"; JSONArray user_detail_jsonarray = null; JSONParser jParser = new JSONParser(); // getting JSON string from URL JSONObject json = jParser.getJSONFromUrl(url); try { // Getting Array of Contacts user_detail_jsonarray = json.getJSONArray(TAG_user_detail); // looping through All Contacts for(int i = 0; i < user_detail_jsonarray.length(); i++){ JSONObject c = user_detail_jsonarray.getJSONObject(i); // Storing each json item in variable int id = c.getInt(TAG_user_id); System.out.println("user id from json"+id); String name_fromjson = c.getString(TAG_user_name); System.out.println("user name from json"+name_fromjson); int phone_no_fromjson = c.getInt(TAG_user_phone); System.out.println("user phone from json"+phone_no_fromjson); int ref_id_fromjson = c.getInt(TAG_ref_id); System.out.println("user ref id from json"+ref_id_fromjson); } } catch (JSONException e) { e.printStackTrace(); }
Pero estoy contando la excepción en esta línea
user_detail_jsonarray = json.getJSONArray(TAG_user_detail);
Mi mensaje Stake Trace es como
{"ref_id":1295,"user_name":"chand","user_phone":"9620085675","user_id":"1"} at user_details of type org.json.JSONObject cannot be converted to JSONArray
He intentado muchos enlaces, pero por desgracia no soy capaz de obtener mi resultado. Por favor, cualquier cuerpo sólo me ayude a resolver este problema. Gracias de antemano a todos
- GSON. Cómo convertir json objeto a json array?
- ¿Por qué este análisis de SimpleDataFormat falla en Android?
- ¿Cómo analizar la respuesta de Json en android?
- Cómo obtener respuesta como String utilizando retrofit sin utilizar GSON o cualquier otra biblioteca en android
- Android NumberFormatException: Doble no válido - excepto que el valor es un doble válido
- Optimización del análisis de JSON en Android
- Mejora del análisis de Java / Kotlin JSON
- JSONException: El valor del tipo java.lang.String no se puede convertir en JSONObject
Su claro de error que usted está intentando convertir el objeto de Json en la matriz de Json. Eso no debería.
Aquí está el código para leer su respuesta de JSON.
String json = "Assuming that here is your JSON response"; try { JSONObject parentObject = new JSONObject(json); JSONObject userDetails = parentObject.getJSONObject("user_details"); //And then read attributes like String name = userDetails.getString("user_name"); String phone = userDetails.getString("user_phone"); String id = userDetails.getString("ref_id"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); }
El código anterior es para {"user_details":{"user_id":"1","user_name":"chand","user_phone":"9620085675","ref_id":6386}}
JSON.
Aprender de la excepción
org.json.JSONObject cannot be converted to JSONArray
Está recibiendo esta excepción org.json.JSONObject cannot be converted to JSONArray
porque está intentando convertir JSONObject to JSONArray
que no es posible.
{
Representa el nodo de objetos json
[
Representa el nodo de la matriz json
Su jsondata es el formato de objeto json. Cambia esta línea
JsonObject user_detail_jsonobj = json.getJSONObject(TAG_user_detail);
- Android sdk Content Loader ha encontrado un problema
- Herramientas de construcción 21.1.2 – EXCEPCION INESPERADA DE NIVEL SUPERIOR