首先,我不确认这是否本身就是这么设计的,我只是提出我使用过程遇到的疑惑。
疑问1:
public class JSONObject extends LinkedHashMap<String, Object> implements InvocationHandler JSONObject的key定义为String,为什么 public Object get(Object key) 又是以Object去get?
疑问2:
Map<Object, String> map = MapUtil.newHashMap(); map.put(2, "hyuga2"); json如下: {2:"hyuga2"}
System.out.println(jsonObject.get(2)); // null System.out.println(jsonObject.get("2")); // null
以上代码get(2)和get("2")都读取不到值,我理解为fastjson不支持读取int型的key值。但是下面的代码又让我迷惑了。
Map<Object, String> map = MapUtil.newHashMap(); map.put(2, "hyuga2"); map.put("2", "hyuga2"); -- 注意这一行 json如下: {2:"hyuga2","2":"hyuga2"}
System.out.println(jsonObject.get(2)); // hyuga2 System.out.println(jsonObject.get("2")); // hyuga2
所以我也不知道fastjson是否真的不支持非String的key去get值。还是说这是个bug???
原提问者GitHub用户hyuga0410
问题已经修复,请用2.0.9-SNAPSHOT验证 https://github.com/alibaba/fastjson2/releases/tag/2.0.9
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。