如何将java.lang.String转换为java.util.LinkedHashMap

时间:2018-08-30 17:01:12

标签: java json spring

我将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”

1 个答案:

答案 0 :(得分:1)

  1. JSONObject具有以下构造函数

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

这意味着您无法创建JSONObject,而在构造函数中传递String。但是您可以使用地图

Map<String, String> map = new LinkedHashMap<>();
    map.put("phonetype","N95");
    map.put("cat", "WP");
    JSONObject jso = new JSONObject(map);
  1. 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