开发者社区> 问答> 正文

fastjson 2 get(Object key)疑惑

首先,我不确认这是否本身就是这么设计的,我只是提出我使用过程遇到的疑惑。

疑问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

展开
收起
飘飘斯嘉丽 2023-04-21 11:31:40 221 0
1 条回答
写回答
取消 提交回答
  • 问题已经修复,请用2.0.9-SNAPSHOT验证 https://github.com/alibaba/fastjson2/releases/tag/2.0.9

    原回答者GitHub用户wenshao

    2023-04-21 14:32:34
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载