代码里一个map1里存了一个key是Integer的map2。在map1入库时,JSONArray json = JSONArray.fromObject(map1);
将json入库时转换报错net.sf.json.JSONException: java.lang.ClassCastException: JSON keys must be strings.
大致意思就像下面的:
JSONObject obj = new JSONObject();
obj.put("map", map);
obj.put("list", list);
JSONObject中放置Map的时候,会自动将Map看成是JSONObject来处理,而我的map中的key值是Integer类型的,在转化的时候就会报这个异常,将Map中的key值换成String类型即可。
同理,以后写代码时,如果碰到JSON中放置Map的情况时,一定要注意Map中的key值的类型,只能是String。
重点来了,why?
https://stackoverflow.com/questions/9304528/why-json-allows-only-string-to-be-a-key