2016-08-27 99 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 
      } 
相关问题