-1

我转换java.lang.Stringor.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”

4

1 回答 1

1
  1. JSONObject 具有以下构造函数

    公共 JSONObject(地图地图){ 超级(地图);}

这意味着您不能创建 JSONObject,在构造函数中传递字符串。但是你可以使用地图

Map<String, String> map = new LinkedHashMap<>();
    map.put("phonetype","N95");
    map.put("cat", "WP");
    JSONObject jso = new JSONObject(map);
  1. get 方法有签名

    公共 V 获取(对象密钥)

这意味着如果你想获取地图,值应该是 Map generic。例如

        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

于 2018-08-30T17:35:12.557 回答