content: package com.alibaba.json.bvt.issue_3100;
  
  import com.alibaba.fastjson.JSON;
  import org.junit.jupiter.api.Test;
  
  import java.io.Serializable;
  import java.util.ArrayList;
  import java.util.List;
  
  public class Issue3131 {
      @Test
      public void test_for_issue() throws Exception {
          List orgs = new ArrayList();
          UserOrg org = new UserOrg("111", "222");
          orgs.add(org);
          String s = JSON.toJSONString(new Orgs("111", orgs));
          System.out.println(s);
          Orgs userOrgs = JSON.parseObject(s, Orgs.class);
          System.out.println(JSON.toJSONString(userOrgs));
      }
  
      public static class Orgs<T extends Org> implements Serializable {
          /**
           *
           */
          private static final long serialVersionUID = -1L;
  
          private String name;
  
          private List<T> orgs;
  
          public Orgs() {
          }
  
          public Orgs(String name, List<T> orgs) {
              this.name = name;
              this.orgs = orgs;
          }
  
          public String getName() {
              return name;
          }
  
          public void setName(String name) {
              this.name = name;
          }
  
          public List<T> getOrgs() {
              return orgs;
          }
  
          public void setOrgs(List<T> orgs) {
              this.orgs = orgs;
          }
  
          public void add(T org) {
              if (orgs == null) {
                  orgs = new ArrayList<T>();
              }
              orgs.add(org);
          }
      }
  
      public static class UserOrg
              extends Org
              implements Serializable {
          private String name;
  
          private String idcard;
  
          public UserOrg() {
          }
  
          public UserOrg(String name, String idcard) {
              super(name);
              this.name = name;
              this.idcard = idcard;
          }
  
          public String getName() {
              return name;
          }
  
          public void setName(String name) {
              this.name = name;
          }
  
          public String getIdcard() {
              return idcard;
          }
  
          public void setIdcard(String idcard) {
              this.idcard = idcard;
          }
      }
  
      public abstract static class Org
              implements Serializable {
          private String name;
  
          public Org() {
          }
  
          public Org(String name) {
              this.name = name;
          }
  
          public String getName() {
              return name;
          }
  
          public void setName(String name) {
              this.name = name;
          }
      }
  }
  