package com.alibaba.json.bvt.ref; import java.util.ArrayList; import java.util.Collection; import org.junit.Assert; import junit.framework.TestCase; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; public class RefTest11 extends TestCase { public void test_ref() throws Exception { Department tech = new Department(1, "技术部"); tech.setRoot(tech); { Department pt = new Department(2, "平台技术部"); pt.setParent(tech); pt.setRoot(tech); tech.getChildren().add(pt); { Department sysbase = new Department(3, "系统基础"); sysbase.setParent(pt); sysbase.setRoot(tech); pt.getChildren().add(sysbase); } } { Department cn = new Department(4, "中文站技术部"); cn.setParent(tech); cn.setRoot(tech); tech.getChildren().add(cn); } { //JSON.toJSONString(tech); } { String prettyText = JSON.toJSONString(tech, SerializerFeature.PrettyFormat); System.out.println(prettyText); String text = JSON.toJSONString(tech); Department dept = JSON.parseObject(text, Department.class); Assert.assertTrue(dept == dept.getRoot()); System.out.println(JSON.toJSONString(dept, SerializerFeature.PrettyFormat)); } } public static class Department { private int id; private String name; private Department parent; private Department root; private Collection<Department> children = new ArrayList<Department>(); public Department(){ } public Department getRoot() { return root; } public void setRoot(Department root) { this.root = root; } public Department(int id, String name){ this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Department getParent() { return parent; } public void setParent(Department parent) { this.parent = parent; } public Collection<Department> getChildren() { return children; } public void setChildren(Collection<Department> children) { this.children = children; } public String toString() { return "{id:" + id + ",name:" + name + "}"; } } }