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

ClassCastException: JSONArray cannot be cast to java.lang.String[]

您好,我正在尝试显示存储在以下 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

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

谢谢!

您示例中的 "errors" 数组不是字符串数组 (String[]),而是 JSONArray。

相反,

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

然后,

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

'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"));
}

这是一个 JsonArray 而不是 String array 所以使用像 simple-json 来自 google 的库并使用下面的解析代码:

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