package com.alibaba.json.bvt.serializer;

import junit.framework.TestCase;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;

public class RefTest6 extends TestCase {

    /**
     * A -> B -> C -> B -> A
     * 
     * @throws Exception
     */
    public void test_0() throws Exception {
        A a = new A();
        B b = new B();
        C c = new C();
        a.setB(b);
        b.setC(c);
        c.setB(b);
        b.setA(a);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("a", a);
        jsonObject.put("c", c);

        String text = JSON.toJSONString(jsonObject, SerializerFeature.PrettyFormat);
        System.out.println(text);
    }

    private class A {

        private B b;

        public B getB() {
            return b;
        }

        public void setB(B b) {
            this.b = b;
        }
    }

    private class B {

        private C c;
        private A a;

        public C getC() {
            return c;
        }

        public void setC(C c) {
            this.c = c;
        }

        public A getA() {
            return a;
        }

        public void setA(A a) {
            this.a = a;
        }
    }

    private class C {

        private B b;

        public B getB() {
            return b;
        }

        public void setB(B b) {
            this.b = b;
        }
    }

}
