Java异常处理:java.lang.ClassCastException: JSON keys must be strings

今天在写程序的时候碰到了这个异常,初始代码如下

JSONObject obj = new JSONObject();
obj.put("map", map);
obj.put("list", list);

第一个想法就是“难道map和list是特殊字符,在JSONObject中会自动进行反射?”,然后就将key值进行了修改,如下:

JSONObject obj = new JSONObject();
obj.put("maps", map);
obj.put("lists", list);

测试之后还是出现同样的异常信息。无奈,去网上查了下相关资料,才发现JSONObject中放置Map的时候,会自动将Map看成是JSONObject来处理,而我的map中的key值是Integer类型的,在转化的时候就会报这个异常,将Map中的key值换成String类型即可。
同理,以后写代码时,如果碰到JSON中放置Map的情况时,一定要注意Map中的key值的类型,只能是String,切记切记!

你可能感兴趣的:(日常Java异常)