JSON-lib学习(三)循环引用

如果A对象持有B的引用,B对象持有A的引用,这样就形成了循环引用,如果直接使用json-lib转换,会报错:

net.sf.json.JSONException: There is a cycle in the hierarchy!

import java.util.HashSet;
import java.util.Set;

public class Aclass
{
    private String name;

    private int age;

    private Set<Bclass> policyGoals = new HashSet<Bclass>();

    public Aclass()
    {
    }

    public Aclass(String name, int age)
    {
        this.name = name;
        this.age = age;
    }

    public String getName()
    {
        return name;
    }

    public Set<Bclass> getPolicyGoals()
    {
        return policyGoals;
    }

    public void setPolicyGoals(Set<Bclass> policyGoals)
    {
        this.policyGoals = policyGoals;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public int getAge()
    {
        return age;
    }

    public void setAge(int age)
    {
        this.age = age;
    }

    @Override
    public String toString()
    {
        return name + "----" + age;
    }

 

public class Bclass
{

    private String sex;

    private int address;

    private Aclass aclass;

    public Bclass()
    {

    }

    public String getSex()
    {
        return sex;
    }

    public void setSex(String sex)
    {
        this.sex = sex;
    }

    public int getAddress()
    {
        return address;
    }

    public void setAddress(int address)
    {
        this.address = address;
    }

    public Aclass getAclass()
    {
        return aclass;
    }

    public void setAclass(Aclass aclass)
    {
        this.aclass = aclass;
    }

}

 

 public static void main(String[] args) throws Exception
    {
        Aclass aObj = new Aclass();
        aObj.setName("xiu");
        aObj.setAge(20);

        // cretae b
        Bclass bObj = new Bclass();
        bObj.setSex("girl");
        bObj.setAddress(100);
        bObj.setAclass(aObj);

        aObj.getPolicyGoals().add(bObj);

        JsonConfig jsonConfig = new JsonConfig();
        // jsonConfig.setExcludes(new String[]{"bclass"});
        jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);

        JSONObject jsonObj = JSONObject.fromObject(aObj,jsonConfig);
        System.out.println(jsonObj.toString());
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值