package com.alibaba.json.bvt.ref; import java.util.Collections; import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; import org.junit.Assert; import com.alibaba.fastjson.JSON; public class RefTest8 extends TestCase { public void test_bug_for_juqkai() throws Exception { C c = new C(); Map<String, Object> a = Collections.<String,Object>singletonMap("c", c); Map<String, Object> b = Collections.<String,Object>singletonMap("c", c); Map<String, Object> vo = new HashMap<String, Object>(); vo.put("a", a); vo.put("b", b); Object[] root = new Object[] { vo }; String text = JSON.toJSONString(root); System.out.println(text); VO[] array2 = JSON.parseObject(text, VO[].class); Assert.assertEquals(1, array2.length); Assert.assertNotNull(array2[0].getA()); Assert.assertNotNull(array2[0].getB()); Assert.assertNotNull(array2[0].getA().getC()); Assert.assertNotNull(array2[0].getB().getC()); Assert.assertSame(array2[0].getA().getC(), array2[0].getB().getC()); } private static class VO { private A a; private B b; public A getA() { return a; } public void setA(A a) { this.a = a; } public B getB() { return b; } public void setB(B b) { this.b = b; } } private static class A { private C c; public A(){ } public A(C c){ this.c = c; } public C getC() { return c; } public void setC(C c) { this.c = c; } } private static class B { private C c; public B(){ } public B(C c){ this.c = c; } public C getC() { return c; } public void setC(C c) { this.c = c; } } private static class C { public C(){ } } }