cómo analizar JSONArray en android

Quiero leer estas líneas JSON , pero como comienza con JSONArray estoy un poco confundido

  "abridged_cast": [ { "name": "Jeff Bridges", "id": "162655890", "characters": [ "Jack Prescott" ] }, { "name": "Charles Grodin", "id": "162662571", "characters": [ "Fred Wilson" ] }, { "name": "Jessica Lange", "id": "162653068", "characters": [ "Dwan" ] }, { "name": "John Randolph", "id": "162691889", "characters": [ "Capt. Ross" ] }, { "name": "Rene Auberjonois", "id": "162718328", "characters": [ "Bagley" ] } ], 

solo necesito usar el “nombre” y guardar todo como una Cadena. (El valor de la cadena será: Jeff Bridges, Charles Grodin, Jessica Lange, John Randolph, René Auberjonois).

este es mi código:

 try { //JSON is the JSON code above JSONObject jsonResponse = new JSONObject(JSON); JSONArray movies = jsonResponse.getJSONArray("characters"); String hey = movies.toString(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

Si busca el ‘nombre’, ¿por qué su fragmento de código parece un bash de obtener los ‘caracteres’?

De todos modos, esto no es diferente de cualquier otra operación de lista o de matriz: solo necesita iterar sobre el conjunto de datos y obtener la información que le interesa. Recuperar todos los nombres debería ser similar a esto:

 List allNames = new ArrayList(); JSONArray cast = jsonResponse.getJSONArray("abridged_cast"); for (int i=0; i 

(typescript directamente en el navegador, entonces no probado).

getJSONArray (attrname) obtendrá una matriz del objeto de ese nombre de atributo dado en su caso lo que está sucediendo es que para

 {"abridged_cast":["name": blah...]} ^ its trying to search for a value "characters" 

pero necesitas entrar en la matriz y luego hacer una búsqueda de “personajes”

prueba esto

 String json="{'abridged_cast':[{'name':'JeffBridges','id':'162655890','characters':['JackPrescott']},{'name':'CharlesGrodin','id':'162662571','characters':['FredWilson']},{'name':'JessicaLange','id':'162653068','characters':['Dwan']},{'name':'JohnRandolph','id':'162691889','characters':['Capt.Ross']},{'name':'ReneAuberjonois','id':'162718328','characters':['Bagley']}]}"; JSONObject jsonResponse; try { ArrayList temp = new ArrayList(); jsonResponse = new JSONObject(json); JSONArray movies = jsonResponse.getJSONArray("abridged_cast"); for(int i=0;i 

comprobado 🙂

Aquí hay una mejor manera de hacerlo. Espero que esto ayude

 protected void onPostExecute(String result) { Log.v(TAG + " result); if (!result.equals("")) { // Set up variables for API Call ArrayList list = new ArrayList(); try { JSONArray jsonArray = new JSONArray(result); for (int i = 0; i < jsonArray.length(); i++) { list.add(jsonArray.get(i).toString()); }//end for } catch (JSONException e) { Log.e(TAG, "onPostExecute > Try > JSONException => " + e); e.printStackTrace(); } adapter = new ArrayAdapter(ListViewData.this, android.R.layout.simple_list_item_1, android.R.id.text1, list); listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { // ListView Clicked item index int itemPosition = position; // ListView Clicked item value String itemValue = (String) listView.getItemAtPosition(position); // Show Alert Toast.makeText( ListViewData.this, "Position :" + itemPosition + " ListItem : " + itemValue, Toast.LENGTH_LONG).show(); } }); adapter.notifyDataSetChanged(); ...