content: package com.alibaba.json.bvt.bug;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import junit.framework.TestCase;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.TypeReference;
  
  public class Bug_for_42283905_1 extends TestCase {
  
      public void test_0() throws Exception {
  
          String text;
          {
              List<Group> groups = new ArrayList<Group>();
  
              Command c0 = new Command(1);
              Command c1 = new Command(2);
              Command c2 = new Command(3);
  
              c1.setPre(c0);
              c2.setPre(c1);
  
              {
                  Group group = new Group("g0");
                  group.getBattleCommandList().add(c0);
                  groups.add(group);
              }
  
              {
                  Group group = new Group("g1");
                  group.getBattleCommandList().add(c1);
                  groups.add(group);
              }
              
              {
                  Group group = new Group("g2");
                  group.getBattleCommandList().add(c2);
                  groups.add(group);
              }
              text = JSON.toJSONString(groups);
          }
  
          System.out.println(text);
  
          Group[] groups = JSON.parseObject(text, new TypeReference<Group[]>() {
          });
          Group g0 = groups[0];
          Group g1 = groups[1];
  
          System.out.println(JSON.toJSONString(groups));
      }
  
      public static class Group {
  
          private String        name;
  
          private List<Command> battleCommandList = new ArrayList<Command>();
  
          public Group(){
  
          }
  
          public Group(String name){
              this.name = name;
          }
  
          public List<Command> getBattleCommandList() {
              return battleCommandList;
          }
  
          public void setBattleCommandList(List<Command> battleCommandList) {
              this.battleCommandList = battleCommandList;
          }
  
          public String getName() {
              return name;
          }
  
          public void setName(String name) {
              this.name = name;
          }
  
      }
  
      public static class Command {
  
          private int id;
  
          public Command(){
  
          }
  
          public Command(int id){
              this.id = id;
          }
  
          public int getId() {
              return id;
          }
  
          public void setId(int id) {
              this.id = id;
          }
  
          private Command pre;
  
          public Command getPre() {
              return pre;
          }
  
          public void setPre(Command pre) {
              this.pre = pre;
          }
  
          public String toString() {
              return "{id:" + id + "}";
          }
      }
  }
  