/ / Jak przekonwertować tablicę json do tablicy ciągów w systemie Android? - android, tablice, json, string

Jak przekonwertować tablicę json do tablicy ciągów w systemie Android? - android, tablice, json, string

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 № 1

Bo 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 objectAby 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);