我将java.lang.String
转换为or.simple.json.JSONObject
。现在,我无法将其投射到HashMap。
org.json.JSONObject jso = new org.json.JSONObject("{"phonetype":"N95","cat":"WP"}");
LinkedHashMap h = (LinkedHashMap) jso.get("phonetype");
System.out.println(h);
我得到一个错误:
“ java.lang.String无法转换为java.util.LinkedHashMap”
答案 0 :(得分:1)
JSONObject具有以下构造函数
公共JSONObject(地图){ 超级(地图); }
这意味着您无法创建JSONObject,而在构造函数中传递String。但是您可以使用地图
Map<String, String> map = new LinkedHashMap<>();
map.put("phonetype","N95");
map.put("cat", "WP");
JSONObject jso = new JSONObject(map);
get方法具有签名
公共V get(对象密钥)
这意味着,如果要获取地图,则值应为“地图通用”。例如
Map<String, String> map = new LinkedHashMap<>();
map.put("phonetype","N95");
map.put("cat", "WP");
Map<String, Map> toConstructor = new LinkedHashMap() {{
put("map", map);
}};
JSONObject jso = new JSONObject(toConstructor);
LinkedHashMap h = (LinkedHashMap) jso.get("map");
System.out.println(h);
在您的情况下,您尝试将String强制转换为LinkedHashMap,因此引发了ClassCastException