content: package com.alibaba.json.bvt.ref;
  
  import com.alibaba.fastjson.JSON;
  import junit.framework.TestCase;
  
  import java.io.Serializable;
  
  /**
   * Created by wenshao on 08/02/2017.
   */
  public class RefTest_for_huanxige extends TestCase {
      public void test_for_ref() throws Exception {
  //字符串通过其它对象序列化而来，当中涉及循环引用，因此存在$ref
          String jsonStr="{\"displayName\":\"灰度发布\",\"id\":221," +
                  "\"name\":\"灰度\",\"processInsId\":48,\"processInstance\":{\"$ref\":\"$" +
                  ".lastSubProcessInstence.parentProcess\"},\"status\":1,\"success\":true," +
                  "\"tail\":true,\"type\":\"gray\"}";
          ProcessNodeInstanceDto a = JSON.parseObject(jsonStr, ProcessNodeInstanceDto.class);//status为空！！！
          assertNotNull(a.status);
          assertEquals(1, a.status.intValue());
      }
  
      public static class ProcessNodeInstanceDto implements Serializable {
          private Long id;
          private Long processInsId;
          private String name;
          private String displayName;
          private Integer status;
          private String type;
          private Boolean success;
          private Boolean tail;
  
          public Long getId() {
              return id;
          }
          public void setId(Long id) {
              this.id = id;
          }
          public Long getProcessInsId() {
              return processInsId;
          }
          public void setProcessInsId(Long processInsId) {
              this.processInsId = processInsId;
          }
          public String getName() {
              return name;
          }
          public void setName(String name) {
              this.name = name;
          }
          public String getDisplayName() {
              return displayName;
          }
          public void setDisplayName(String displayName) {
              this.displayName = displayName;
          }
          public Integer getStatus() {
              return status;
          }
          public void setStatus(Integer status) {
              this.status = status;
          }
          public String getType() {
              return type;
          }
          public void setType(String type) {
              this.type = type;
          }
          public Boolean getSuccess() {
              return success;
          }
          public void setSuccess(Boolean success) {
              this.success = success;
          }
          public Boolean getTail() {
              return tail;
          }
          public void setTail(Boolean tail) {
              this.tail = tail;
          }
      }
  }
  