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