2014-09-09 4 views
1

Я преобразовываю массив json в строковый массив, который не существует ни одного тега. Я пробовал все трюки, но не удалось.Как преобразовать массив json в строковый массив в android?

JSON массива: -

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

Код для новообращенного массив JSON в строку значений

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(); 
           } 
          } 
         } 
        } 

       } 

Исключение:

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

Если у кого-то есть идея. Ответьте, пожалуйста. Заранее спасибо ..

ответ

2

Поскольку validValues JSONArray содержат только строки вместо JSONObject .so получить все значения из JSONArray как:

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

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

    } 
+0

Большое спасибо за ответ. Попробуйте и дайте знать. – jagdish

+0

Да .. Ваше решение работает нормально ... принимая ответ ... – jagdish

1

Ваш массив JSON содержит Strings не json object .Therefore, чтобы получить строки из массива JSON напрямую использовать getString(), Так Изменить

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

к

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

или

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

Большое спасибо за ответ. работает отлично .. +1 – jagdish

0

Вы должны использовать optString(int) принуждать строковое значение из массива. Использование getString(int) вызовет проблемы, если бы значения в массиве не были строками.

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

Если вы хотите, чтобы значение по умолчанию, используйте optString(int, String).

0

попробовать JSONObject jsonObject = jsonArray.getString(j);

вместо JSONObject jsonObject = jsonArray.getJSONObject(j);

Смежные вопросы