Fastjson 重复引用对象的问题

本贴最后更新于 1370 天前,其中的信息可能已经事过境迁

Fastjson 重复引用对象的问题

出现相同的对象时,fastjson 默认开启引用检测将相同的对象写成引用的形式

引用是通过"$ref"来表示的

引用 描述
"$ref":".." 上一级
"$ref":"@" 当前对象,也就是自引用
"ref":"" 根对象
"ref":".children.0" 基于路径的引用,相当于 root.getChildren().get(0)

复现


    public static void main(String[] args) {
        final JSONObject src = new JSONObject();
        src.put("a", "b");
        src.put("c", "d");
        src.put("e", "f");
        final JSONObject object = new JSONObject();
        object.put("src", src);
        object.put("target", src);

        System.out.println(object.toJSONString());
    }

输出:

{"src":{"a":"b","c":"d","e":"f"},"target":{"$ref":"$.src"}}

Process finished with exit code 0

解决办法

使用 DisableCircularReferenceDetect 来禁止循环引用检测

//在可以添加SerializerFeature参数的地方添加此配置项即可
System.out.println(object.toString(SerializerFeature.DisableCircularReferenceDetect));

输出:

{"src":{"a":"b","c":"d","e":"f"},"target":{"a":"b","c":"d","e":"f"}}

Process finished with exit code 0
  • Fastjson
    10 引用
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...