ClassCastException:JSONArray无法强制转换为java.lang.String []

时间:2016-08-27 05:40:09

标签: java android arrays classcastexception

您好我正在尝试显示存储在以下JSONObject obj

中的错误消息
{"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

任何人都可以向我解释这个问题以及如何解决它吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

' erros'数组不是{ "message": "Test is not a function", "error": {} } 数组。所以在String中获得价值 这样做。

JSONArray

你可以转换它。

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

答案 1 :(得分: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 :(得分:1)

此处为JsonArray而不是String array,因此请使用 google 中的simple-json库,并使用以下代码进行解析:

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