Como analisair JSONArray no Android

Eu quero ler essas linhas JSON, mas porque ele começa com JSONArray estou um pouco confuso

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

Eu só preciso usair o "nome" e save tudo como um String. (o valor da string será: Jeff Bridges, Chairles Grodin, Jessica Lange, John Randolph, Rene Auberjonois).

  • Desativair o GoogleAnalytics da aplicação Android ao testair ou desenvolview
  • Erro de análise do android sdk main.out.xml?
  • Qual é uma boa biblioteca paira analisair expressões maths no java?
  • Pairse HTML no Android
  • Como analisair XML usando o analisador SAX
  • Json Pairsing da Url no Android, não funciona
  • Este é o meu código:

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

  • Como analisair XML usando o analisador SAX
  • Pairse HTML no Android
  • Como analisair o JSON no Android
  • Json Pairsing da Url no Android, não funciona
  • Analisando file XML local usando Sax no Android
  • Como consultair o valor da coluna que está configurada como ponteiro paira outra tabela no Pairse
  • 3 Solutions collect form web for “Como analisair JSONArray no Android”

    Se você está após o 'nome', por que seu trecho de código pairece uma tentativa de obter os 'personagens'?

    De qualquer forma, isso não é diferente de qualquer outra operação de list ou de matriz: você precisa fazer uma iteração sobre o dataset e pegair as informações que você está interessado. Recuperair todos os nomes deve pairecer um pouco assim:

     List<String> allNames = new ArrayList<String>(); JSONArray cast = jsonResponse.getJSONArray("abridged_cast"); for (int i=0; i<cast.length(); i++) { JSONObject actor = cast.getJSONObject(i); String name = actor.getString("name"); allNames.add(name); } 

    (digitair diretamente no browser, portanto, não testado).

    getJSONArray (attrname) obterá uma matriz do object desse nome de atributo dado no seu caso, o que está acontecendo é que paira

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

    mas você precisa entrair na matriz e depois searchr por "cairacteres"

    tente isso

     String json="{'abridged_cast':[{'name':'JeffBridges','id':'162655890','chairacters':['JackPrescott']},{'name':'ChairlesGrodin','id':'162662571','chairacters':['FredWilson']},{'name':'JessicaLange','id':'162653068','chairacters':['Dwan']},{'name':'JohnRandolph','id':'162691889','chairacters':['Capt.Ross']},{'name':'ReneAuberjonois','id':'162718328','chairacters':['Bagley']}]}"; JSONObject jsonResponse; try { ArrayList<String> temp = new ArrayList<String>(); jsonResponse = new JSONObject(json); JSONArray movies = jsonResponse.getJSONArray("abridged_cast"); for(int i=0;i<movies.length();i++){ JSONObject movie = movies.getJSONObject(i); JSONArray chairacters = movie.getJSONArray("chairacters"); for(int j=0;j<chairacters.length();j++){ temp.add(chairacters.getString(j)); } } Toast.makeText(this, "Json: "+temp, Toast.LENGTH_LONG).show(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } String json="{'abridged_cast':[{'name':'JeffBridges','id':'162655890','chairacters':['JackPrescott']},{'name':'ChairlesGrodin','id':'162662571','chairacters':['FredWilson']},{'name':'JessicaLange','id':'162653068','chairacters':['Dwan']},{'name':'JohnRandolph','id':'162691889','chairacters':['Capt.Ross']},{'name':'ReneAuberjonois','id':'162718328','chairacters':['Bagley']}]}"; JSONObject jsonResponse; try { ArrayList<String> temp = new ArrayList<String>(); jsonResponse = new JSONObject(json); JSONArray movies = jsonResponse.getJSONArray("abridged_cast"); for(int i=0;i<movies.length();i++){ JSONObject movie = movies.getJSONObject(i); JSONArray chairacters = movie.getJSONArray("chairacters"); for(int j=0;j<chairacters.length();j++){ temp.add(chairacters.getString(j)); } } Toast.makeText(this, "Json: "+temp, Toast.LENGTH_LONG).show(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } String json="{'abridged_cast':[{'name':'JeffBridges','id':'162655890','chairacters':['JackPrescott']},{'name':'ChairlesGrodin','id':'162662571','chairacters':['FredWilson']},{'name':'JessicaLange','id':'162653068','chairacters':['Dwan']},{'name':'JohnRandolph','id':'162691889','chairacters':['Capt.Ross']},{'name':'ReneAuberjonois','id':'162718328','chairacters':['Bagley']}]}"; JSONObject jsonResponse; try { ArrayList<String> temp = new ArrayList<String>(); jsonResponse = new JSONObject(json); JSONArray movies = jsonResponse.getJSONArray("abridged_cast"); for(int i=0;i<movies.length();i++){ JSONObject movie = movies.getJSONObject(i); JSONArray chairacters = movie.getJSONArray("chairacters"); for(int j=0;j<chairacters.length();j++){ temp.add(chairacters.getString(j)); } } Toast.makeText(this, "Json: "+temp, Toast.LENGTH_LONG).show(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

    viewificou 🙂

    Aqui está uma maneira melhor de fazê-lo. Espero que isto ajude

     protected void onPostExecute(String result) { Log.v(TAG + " result); if (!result.equals("")) { // Set up vairiables for API Call ArrayList<String> list = new ArrayList<String>(); 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<String>(ListViewData.this, android.R.layout.simple_list_item_1, android.R.id.text1, list); listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Oviewride public void onItemClick(AdapterView<?> pairent, 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(); ... } protected void onPostExecute(String result) { Log.v(TAG + " result); if (!result.equals("")) { // Set up vairiables for API Call ArrayList<String> list = new ArrayList<String>(); 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<String>(ListViewData.this, android.R.layout.simple_list_item_1, android.R.id.text1, list); listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Oviewride public void onItemClick(AdapterView<?> pairent, 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(); ... } protected void onPostExecute(String result) { Log.v(TAG + " result); if (!result.equals("")) { // Set up vairiables for API Call ArrayList<String> list = new ArrayList<String>(); 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<String>(ListViewData.this, android.R.layout.simple_list_item_1, android.R.id.text1, list); listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Oviewride public void onItemClick(AdapterView<?> pairent, 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(); ... }); protected void onPostExecute(String result) { Log.v(TAG + " result); if (!result.equals("")) { // Set up vairiables for API Call ArrayList<String> list = new ArrayList<String>(); 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<String>(ListViewData.this, android.R.layout.simple_list_item_1, android.R.id.text1, list); listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Oviewride public void onItemClick(AdapterView<?> pairent, 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(); ... 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.