好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

关于JSONObject.toJSONString出现地址引用问题

JSONObject.toJSONString地址引用问题

如果一个对象中有两个同类型的对象属性a、b,如果a、b直接引用同一对象的内存地址,JSONObject.toJSONString方法得到的json字符串会出现内存地址引用。

?

1

2

3

4

5

6

7

8

9

public static void main(String[] args) {

        JsonVO jsonVO = new JsonVO();

        A a = new A();

        a.setA( "a" );

        a.setB( "b" );

        jsonVO.setA(a);

        jsonVO.setB(a);

        System.out.println(JSONObject.toJSONString(jsonVO));

    }

?

1

2

3

4

5

@Data

public class JsonVO implements Serializable {

    private A a;

    private A b;

}

?

1

2

3

4

5

@Data

public class A implements Serializable {

    private String a;

    private String b;

}

控制台输出结果:

{[a]:{[a]:[a],[b]:[b]},[b]:{"r e f &quot; : &quot; ref&quot;:&quot;ref":".a"}}

如何避免呢?

?

1

System.out.println(JSONObject.toJSONString(jsonVO, SerializerFeature.DisableCircularReferenceDetect));

不要盲目的使用JSONObject.toJSONString

JSONObject.toJSONString会默认执行你这个要解析的类中的所有get方法

很容易出现空指针异常,而应该换为gson.toJson()这个方法

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/weixin_44094122/article/details/99858306

查看更多关于关于JSONObject.toJSONString出现地址引用问题的详细内容...

  阅读:17次