FastJson重复引用 循环引用

2018-03-20  本文已影响0人  fengjixcuhui

重复引用

  public class JsonTest {

   /**
    * 学生
    */
   private static class Student {

       /**
        * 姓名
        */
       private String name;

       public Student(String name) {
           this.name = name;
       }

       /**
        * Getter method for property  name.
        *
        * @return property value of name
        */
       public String getName() {
           return name;
       }

       /**
        * Setter method for property  counterType.
        *
        * @param name value to be assigned  to property <tt>name</tt>
        */
       public void setName(String name) {
           this.name = name;
       }
   }

   private static class Teacher {

       /**
        * 姓名
        */
       private String        name;

       /**
        * 学生列表
        */
       private List<Student> studentList = Lists.newArrayList();

       /**
        * 新增学生
        * @param student
        */
       public void addStudent(Student student) {
           studentList.add(student);
       }

       /**
        * Getter method for property  name.
        *
        * @return property value of name
        */
       public String getName() {
           return name;
       }

       /**
        * Setter method for property  counterType.
        *
        * @param name value to be assigned  to property <tt>name</tt>
        */
       public void setName(String name) {
           this.name = name;
       }

       /**
        * Getter method for property  studentList.
        *
        * @return property value of studentList
        */
       public List<Student> getStudentList() {
           return studentList;
       }

       /**
        * Setter method for property  counterType.
        *
        * @param studentList value to be assigned  to property <tt>studentList</tt>
        */
       public void setStudentList(List<Student> studentList) {
           this.studentList = studentList;
       }
   }

   public static void main(String[] args) {

       Teacher teacher = new Teacher();

       Student student = new Student("张三");
       teacher.addStudent(student);
       teacher.addStudent(student);
       System.out.println(JSON.toJSONString(teacher));

   }
}

结果:
{"studentList":[{"name":"张三"},{"$ref":"$.studentList[0]"}]}

循环引用

private static class Item{

        /**
         * 商品Id
         */
        private String itemId;

        /**
         * 关联订单
         */
        private Order  order;

        /**
         * Getter method for property  itemId.
         *
         * @return property value of itemId
         */
        public String getItemId() {
            return itemId;
        }

        /**
         * Setter method for property  counterType.
         *
         * @param itemId value to be assigned  to property <tt>itemId</tt>
         */
        public void setItemId(String itemId) {
            this.itemId = itemId;
        }

        /**
         * Getter method for property  order.
         *
         * @return property value of order
         */
        public Order getOrder() {
            return order;
        }

        /**
         * Setter method for property  counterType.
         *
         * @param order value to be assigned  to property <tt>order</tt>
         */
        public void setOrder(Order order) {
            this.order = order;
        }
    }


    private static class Order{

        /**
         * 订单Id
         */
        private String orderId;

        /**
         * 关联商品
         */
        private Item   item;

        /**
         * Getter method for property  orderId.
         *
         * @return property value of orderId
         */
        public String getOrderId() {
            return orderId;
        }

        /**
         * Setter method for property  counterType.
         *
         * @param orderId value to be assigned  to property <tt>orderId</tt>
         */
        public void setOrderId(String orderId) {
            this.orderId = orderId;
        }

        /**
         * Getter method for property  item.
         *
         * @return property value of item
         */
        public Item getItem() {
            return item;
        }

        /**
         * Setter method for property  counterType.
         *
         * @param item value to be assigned  to property <tt>item</tt>
         */
        public void setItem(Item item) {
            this.item = item;
        }
    }

        public static void main(String[] args) {

        Order order = new Order();

        Item item = new Item();
        item.setItemId("itemId");
        item.setOrder(order);

        order.setItem(item);
        order.setOrderId("orderId");

        System.out.println(JSON.toJSONString(item));
        System.out.println(JSON.toJSONString(order));


    }

结果:
{"itemId":"itemId","order":{"item":{"$ref":".."},"orderId":"orderId"}}
{"item":{"itemId":"itemId","order":{"$ref":".."}},"orderId":"orderId"}

解决方案

上一篇 下一篇

猜你喜欢

热点阅读