最近在开发时遇到一个问题, 简化如下:
String v = "{\"hello\":1,\"world\":\"2\"}";
Map<String, String> mapCur = JSONObject.parseObject(v, HashMap.class);
System.out.println("map size : " + mapCur.size());
StringBuffer sb = new StringBuffer();
sb.append(mapCur.get("hello"));
sb.append(mapCur.get("world"));
如上代码会报类型转化错误。
由于json字符串中包含有int值,在转化为map后,在map中的值通过断点查看依然是int,在get时报错了。
由此可知,我们申明的Map<String, String>类型不起作用。
修改为如下代码后即正常。
Map<String, String> mapCur = JSONObject.parseObject(v, new TypeReference<Map<String, String>>(){});
根据后台返回数据定义数据bean时,一定要注意内部类的使用。具体学习该博客。