【踩坑篇】代码中使用 Long 作为 Map的Key存在的问题

本周的工作结束,详述一些在项目代码中实际遇到的一些坑。

代码中遇到这样一个场景:

有个业务接口,接口返回的值是一个JSON格式的字符串,通过JSON解析的方式,解析为格式为:
Map> 的数据格式。

然后,根据业务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

解决方案:

【踩坑篇】代码中使用 Long 作为 Map的Key存在的问题_第1张图片
发现转化成的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":"张三"}

你可能感兴趣的:(问题汇总及解决方案,Java项目经验,HashMap)