JSON Array iterazione in Android / Java

Sto costruendo un'applicazione android che necessita di scaricare e sincronizzare con un database online, invio la mia domanda dall'applicazione a una pagina php che restituisce le righe relative da un database in formato JSON.

qualcuno può dirmi il modo migliore per iterare attraverso una matrix JSON?

  • rawQuery (query, selectionArgs)
  • Denominare la mia applicazione in android
  • Cordova: Imansible installare apk dopo l'aggiornamento di android a 5.1.1 Nexus 5
  • Posso avere OnScrollListener per uno ScrollView?
  • Qual è la differenza tra -deput e nodpi?
  • Nexus 10 - non visibile adb su Windows 7 o Linux
  • Ricevo una serie di oggetti:

    [{json object},{json object},{json object}]

    Qual è il pezzo più semplice di codice che potrei utilizzare per accedere ai JSONObjects nell'arrays?

    EDIT: ora che penso al metodo che ho usato per iterare il ciclo era:

     for (String row: json){ id = row.getInt("id"); name = row.getString("name"); password = row.getString("password"); } 

    Quindi credo che avessi avuto in qualche modo in grado di trasformare il restituito Json in arrays e iterabile. Qualche idea come posso get questo?

    Mi scuso per la mia vagina, ma ho lavorato da un esempio che ho trovato sul web e da allora non sono riuscito a trovarlo.

  • Leggete il file del client Cert PKCS12 / P12 per Android App
  • Come impostare l'allarme utilizzando la class di allarme
  • Componenti di gravità dell'accelerometro
  • Come rilevare caratteri speciali in un text di modifica e visualizzare un Toast in risposta (Android)?
  • Modifica il peso del layout con un'animation
  • Come convertire un TextView in EditText in android?
  • 10 Solutions collect form web for “JSON Array iterazione in Android / Java”

    Ho fatto due modi diversi,

    1.) fare una mappa

      HashMap<String, String> applicationSettings = new HashMap<String,String>(); for(int i=0; i<settings.length(); i++){ String value = settings.getJSONObject(i).getString("value"); String name = settings.getJSONObject(i).getString("name"); applicationSettings.put(name, value); } 

    2.) fare un JSONArray di nomi

      JSONArray names = json.names(); JSONArray values = json.toJSONArray(names); for(int i=0; i<values.length(); i++){ if (names.getString(i).equals("description")){ setDescription(values.getString(i)); } else if (names.getString(i).equals("expiryDate")){ String dateString = values.getString(i); setExpiryDate(stringToDateHelper(dateString)); } else if (names.getString(i).equals("id")){ setId(values.getLong(i)); } else if (names.getString(i).equals("offerCode")){ setOfferCode(values.getString(i)); } else if (names.getString(i).equals("startDate")){ String dateString = values.getString(i); setStartDate(stringToDateHelper(dateString)); } else if (names.getString(i).equals("title")){ setTitle(values.getString(i)); } } 

    Penso che questo codice sia breve e chiaro:

     int id; String name; JSONArray arrays = new JSONArray(string_of_json_arrays); for (int i = 0; i < arrays.length(); i++) { JSONObject row = arrays.getJSONObject(i); id = row.getInt("id"); name = row.getString("name"); } 

    È quello che stavi cercando?

    Questo articolo mi ha aiutato quando ho iniziato con JSON e Android:

    http://www.androidcompetencycenter.com/2009/10/json-parsing-in-android/

    Su Array, cercare:

     JSONArray menuitemArray = popupObject.getJSONArray("menuitem"); 

    purtroppo, JSONArray non support per each dichiarazione, come:

     for(JSONObject someObj : someJsonArray) { // do something about someObj .... .... } 

    Utilizza il processre Jackson JSON di Java , inoltre è disponibile per Android.

    Ci sono diversi modi per analizzare JSON con esso:

    • Streaming (come Sax)
    • Albero (come DOM)
    • Object-mapped (come JAXB)

    EDIT:

    Prendi le classi org.json, ci sono già nell'API android.

    Se stai utilizzando l' implementazione JSON.org Java , che è open source, puoi solo fare JSONArray implementare l'interface Iterable e aggiungere la seguente metodologia alla class:

     @Override public Iterator iterator() { return this.myArrayList.iterator(); } 

    Questo renderà tutti i casi di JSONArray iterabile, il che significa che la sintax for (Object foo : bar) ora functionrà con esso (notare che foo deve essere un object, perché JSONArrays non dispone di un tipo dichiarato). Tutto ciò funziona perché la class JSONArray è supportta da un semplice ArrayList, che è già iterabile. Immagino che altre implementazioni open source sarebbero altrettanto facili da cambiare.

    Stai utilizzando lo stesso object Cast per each voce. Su each iterazione hai appena cambiato lo stesso object invece creando una nuova.

    Questo codice dovrebbe risolvere il problema:

     JSONArray jCastArr = jObj.getJSONArray("abridged_cast"); ArrayList<Cast> castList= new ArrayList<Cast>(); for (int i=0; i < jCastArr.length(); i++) { Cast person = new Cast(); // create a new object here JSONObject jpersonObj = jCastArr.getJSONObject(i); person.castId = (String) jpersonObj.getString("id"); person.castFullName = (String) jpersonObj.getString("name"); castList.add(person); } details.castList = castList; 

    Mentre iterando su un arrays JSON (org.json.JSONArray, integrato in Android), guardare per gli oggetti nulli ; ad esempio, si può get "null" invece di una string null .

    Un controllo può sembrare:

     s[i] = arrays.isNull(i) ? null : arrays.getString(i); 

    Quando ho provato il suggerimento di @ vipw mi sono trovata di fronte a questa exception: The method getJSONObject(int) is undefined for the type JSONArray

    Questo ha funzionato per me invece:

     int myJsonArraySize = myJsonArray.size(); for (int i = 0; i < myJsonArraySize; i++) { JSONObject myJsonObject = (JSONObject) myJsonArray.get(i); // Do whatever you have to do to myJsonObject... } 

    Spero che questo aiuterà qualcuno che ha bisogno di iterare JSONObject usando per ciascuno

     for(Object object: jsonArray){ JSONObject jsonObject = (JSONObject) object; // Then you can go on from here } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.