本周的工作结束,详述一些在项目代码中实际遇到的一些坑。
代码中遇到这样一个场景:
有个业务接口,接口返回的值是一个JSON格式的字符串,通过JSON解析的方式,解析为格式为:
Map<Long, Map<String, Object>> 的数据格式。
然后,根据业务keyId,去上面接口返回的map取值,发现一直为null。
场景复现代码如下所示:
Long key = 89765487L;String returnStr = "{89765487:{\"uid\":\"2\",\"uname\":\"张三\"}}";Map<Long, Map<String, Object>> strMap = JSON.parseObject(returnStr, Map.class);System.out.println("strMap = " + strMap);Map<String, Object> valueMap = strMap.get(key);System.out.println("valueMap = " + valueMap);
strMap = {10003={"uid":"2","uname":"张三"}}
valueMap = null
解决方案:
发现转化成的Map的key变为String类型的了,此时get Long类型返回为null。
为了由于类型不一致导致的取值问题,现在统一把Map中的key使用string类型。
String key = "89765487";String returnStr = "{89765487:{\"uid\":\"2\",\"uname\":\"张三\"}}";Map<String, Map<String, Object>> strMap = JSON.parseObject(returnStr, Map.class);System.out.println("strMap = " + strMap);Map<String, Object> valueMap = strMap.get(key);System.out.println("valueMap = " + valueMap);
strMap = {89765487={"uid":"2","uname":"张三"}}
valueMap = {"uid":"2","uname":"张三"}