2016-08-27 54 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

在 '誤差修改' 數組不是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谷歌,並使用下面的代碼解析:

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