【发布时间】:2017-09-07 19:00:42
【问题描述】:
这是一个示例 sn-p,我在其中尝试从 json 对象获取数组列表,但在执行此操作时遇到了类强制转换异常。
public static void main(String args[]) throws Exception {
List<String> arrayList = new ArrayList<String>();
arrayList.add("a");
arrayList.add("b");
arrayList.add("c");
arrayList.add("d");
arrayList.add("e");
JSONObject json = new JSONObject();
json.put("raja", "suba");
json.put("arraylist", arrayList);
System.out.println("Thus the value of array list is : "+json.get("arraylist"));
List<String> oldlist = (List<String>) json.get("arraylist");
System.out.println("Old list contains : "+oldlist);
System.out.println("The old json contains : "+json.toString());
String result = json.toString();
JSONObject json1 = new JSONObject(result);
System.out.println("The new json value is : " +json1);
System.out.println("The value in json for raja is :" +json1.get("raja"));
System.out.println("The vlaue of array list is : "+json1.get("arraylist"));
List<String> newlist = (List<String>) json1.get("arraylist");
System.out.println("Thus the value of new list contains : "+newlist);
}
我在获取oldlist 时没有遇到异常,但是在获取newlist 时我遇到了类转换异常。
- 为什么数组列表在第一种情况下被视为对象,而在第二种情况下被视为字符串?
- json.toString() 究竟做了什么?它是将整个 json 对象转换为字符串,例如将双引号 "" 附加到整个 json 对象,还是将其中的每个对象都转换为字符串?
【问题讨论】:
-
你必须想办法告诉
json值的类型与键arraylist。 -
你是说我们应该得到像“getString”、“getLong”这样的数组列表......是这样的@santosh-patil?
-
如果您的意图是从 jsonobject 获取列表,则使用以下代码: JSONArray oldlist = json.getJSONArray("arraylist"); System.out.println("旧列表包含:" + oldlist);
-
由于数组列表不是 JSONArray - 尝试将其作为 json 数组获取将再次导致错误..
标签: java json string arraylist classcastexception