/ / Comment convertir le tableau JSON en tableau tableau sous Android? - android, tableaux, json, chaîne

Comment convertir le tableau json en tableau de chaînes dans Android? - Android, tableaux, json, chaîne

Je suis en train de convertir un tableau JSON en tableau de chaînes qui n’existe pas de balise. J’ai essayé avec toutes les astuces mais sans succès.

tableau json: -

"validValues": ["01_Abacus", "02_AlarmClock", "03_Basketball", "04_Beaker", "55_Watch"]

Code pour convertir le tableau json en valeurs de chaîne

if (jsonComponentObj.has(TAG_VALID_VALUES)) {
String value = jsonComponentObj.getString(TAG_VALID_VALUES);
Logs.e("value " + value);
if (!value.equals("null")) {
JSONArray jsonArray = jsonComponentObj
.getJSONArray(TAG_VALID_VALUES);

if (jsonArray != null) {
ArrayList<String> stringArray = new ArrayList<String>();
for (int j = 0; j < jsonArray.length(); j++) {
try {
JSONObject jsonObject = jsonArray
.getJSONObject(j);
stringArray.add(jsonObject.toString());
} catch (JSONException e) {
Logs.e("Exception: "+e.toString());
e.printStackTrace();
}
}
}
}

}

Exception:

org.json.JSONException: Value 01_Abacus at 0 of type java.lang.String cannot be converted to JSONObject

Si quelqu'un a une idée. Répondez, s'il vous plaît. Merci d'avance..

Réponses:

2 pour la réponse № 1

Car validValues JSONArray contient uniquement des chaînes au lieu de JSONObjectRécupère toutes les valeurs de JSONArray en tant que:

for (int j = 0; j < jsonArray.length(); j++) {

String str_value = jsonArray.optString(j);
stringArray.add(str_value);

}

1 pour la réponse № 2

Votre tableau JSON contient Strings ne pas json objectPar conséquent, pour obtenir des chaînes du tableau json, utilisez directement getString(),Alors Changement

JSONObject jsonObject = jsonArray.getJSONObject(j);
stringArray.add(jsonObject.toString());

à

 stringArray.add(jsonArray.getString(j));

ou

stringArray.add(jsonArray.optString(j));

0 pour la réponse № 3

Tu devrais utiliser optString(int) pour contraindre une valeur de chaîne à partir de array. En utilisant getString(int) causerait des problèmes si jamais les valeurs du tableau n'étaient pas des chaînes.

for (int j = 0; j < jsonArray.length(); j++) {
String value = jsonArray.optString(j);
stringArray.add(value);
}

Si vous voulez donner une valeur par défaut, utilisez optString(int, String).


0 pour la réponse № 4

essayer JSONObject jsonObject = jsonArray.getString(j);

au lieu de JSONObject jsonObject = jsonArray.getJSONObject(j);