2016-08-27 4 views
0

Привет Я пытаюсь для отображения сообщений об ошибках, сохраненные в следующих JSONObject OBJClassCastException: JSONArray не может быть приведен к java.lang.String []

{"errors":["nickname is already taken,","email is already taken"]} 

Это моя реализация:

TextView errorMsg; 
errorMsg = (TextView)findViewById(R.id.register_error); 
String[] errorArray = (String[])obj.get("errors");          
errorMsg.setText(errorArray[0]);               
Toast.makeText(getApplicationContext(), errorArray[0], Toast.LENGTH_LONG).show();   

Однако при попытке запустить код, я получаю ClassCastException

enter image description here

Может ли кто-нибудь объяснить мне проблему и как я могу ее решить?

Спасибо!

ответ

1

Массив «errors» в вашем примере не является массивом String (String []), это JSONArray.

Вместо этого делать

JSONArray errorArray = obj.getJSONArray("errors"); 

затем,

errorMsg.setText(errorArray.getString(0));               
Toast.makeText(getApplicationContext(), errorArray.getString(0), Toast.LENGTH_LONG).show();   
2

Массив 'erros' не String массив. Так что получите значение в JSONArray сделайте это.

JSONArray errorArray = obj.getJSONArray("errors"); 

его можно преобразовать.

List<String> list = new ArrayList<String>(); 
for(int i = 0; i < arr.length(); i++){ 
    list.add(arr.getJSONObject(i).getString("name")); 
} 
1

Вот что это JsonArray и не String array так использовать библиотеку как simple-json из Google и анализировать с помощью ниже код:

 JSONArray erroeArray= (JSONArray) jsonObject.get("errors"); 
     Iterator<String> iterator = erroeArray.iterator(); 
      while (iterator.hasNext()) { 
      //yourcode here 
      }