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 № 1Car validValues
JSONArray contient uniquement des chaînes au lieu de JSONObject
Ré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 object
Par 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);