Konwertuję tablicę json na tablicę ciągów, która nie ma żadnego tagu. Próbowałem wszystkich trików, ale nie udało mi się.
tablica json: -
"validValues": ["01_Abacus", "02_AlarmClock", "03_Basketball", "04_Beaker", "55_Watch"]
Kod konwertujący tablicę json na wartości łańcuchowe
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();
}
}
}
}
}
Wyjątek:
org.json.JSONException: Value 01_Abacus at 0 of type java.lang.String cannot be converted to JSONObject
Jeśli ktoś ma pomysł. Proszę odpowiedz. Z góry dziękuję..
Odpowiedzi:
2 dla odpowiedzi № 1Bo validValues
JSONArray zawiera tylko ciągi zamiast JSONObject
.so uzyskać wszystkie wartości z JSONArray jako:
for (int j = 0; j < jsonArray.length(); j++) {
String str_value = jsonArray.optString(j);
stringArray.add(str_value);
}
1 dla odpowiedzi nr 2
Twoja tablica json zawiera Strings
nie json object
Aby uzyskać ciągi z tablicy json bezpośrednio użyć getString()
,Więc Zmiana
JSONObject jsonObject = jsonArray.getJSONObject(j);
stringArray.add(jsonObject.toString());
do
stringArray.add(jsonArray.getString(j));
lub
stringArray.add(jsonArray.optString(j));
0 dla odpowiedzi № 3
Powinieneś użyć optString(int)
wymuszać wartość ciągu z tablicy. Za pomocą getString(int)
spowodowałoby problemy, gdyby kiedykolwiek wartości w tablicy nie były łańcuchami.
for (int j = 0; j < jsonArray.length(); j++) {
String value = jsonArray.optString(j);
stringArray.add(value);
}
Jeśli chcesz podać wartość domyślną, użyj optString(int, String)
.
0 dla odpowiedzi nr 4
próbować JSONObject jsonObject = jsonArray.getString(j);
zamiast JSONObject jsonObject = jsonArray.getJSONObject(j);