开发者社区> 问答> 正文

请问,fastjson中 new JSONObject(true) 底层是 用hashmap ,那么

请问,fastjson中 new JSONObject(true) 底层是 用hashmap ,那么fastjson2中如果实现。

原提问者GitHub用户heyihuiforjava

展开
收起
大圣东游 2023-04-21 12:03:25 278 0
2 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    在Fastjson2中,使用HashMap来实现JSONObject(设置缺省值true),可以使用如下方式:

    public class JSONObject extends HashMap<String, Object> {

    private static final long serialVersionUID = 1L;
    
    public JSONObject() {
        super();
    }
    
    public JSONObject(int initialCapacity) {
        super(initialCapacity);
    }
    
    public JSONObject(Map<? extends String, ? extends Object> m) {
        super(m);
    }
    
    public JSONObject(boolean ordered) {
        super();
        if (ordered) {
            super.put(JSON.DEFAULT_TYPE_KEY, JSON.DEFAULT_TYPE_NAME_HASHMAP);
        } else {
            super.put(JSON.DEFAULT_TYPE_KEY, JSON.DEFAULT_TYPE_NAME);
        }
    }
    

    } 在这个实现中,JSONObject类继承了HashMap< String, Object>,并通过相应的构造函数实现了对应的初始化。同时在构造函数中,如果ordered为true,那么就把静态变量JSON.DEFAULT_TYPE_KEY设置为JSON.DEFAULT_TYPE_NAME_HASHMAP。

    这个实现和Fastjson1.2.x中的实现基本一致,只是将代码包装成了一个独立的类。

    2023-04-21 21:17:06
    赞同 展开评论 打赏
  • 新版本是从LinkedHashMap集成的,缺省就是,不用传入true

    原回答者GitHub用户wenshao

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

相关电子书

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