content: package com.alibaba.json.bvt.bug;
  
  import java.io.Serializable;
  import java.util.ArrayList;
  import java.util.List;
  
  import junit.framework.TestCase;
  
  import org.junit.Assert;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.annotation.JSONField;
  
  public class Bug_for_uin57 extends TestCase {
  
      public void test_multiArray() throws Exception {
          String jsonString = "{\"block\":{\"boxList\":[{\"dx\":1,\"dy\":1},{\"dx\":0,\"dy\":0},{\"dx\":0,\"dy\":2},{\"dx\":2,\"dy\":0},{\"dx\":2,\"dy\":2}],\"centerBox\":{\"dx\":1,\"dy\":1},\"offsetX\":0,\"offsetY\":0},\"boxs\":[[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null]]}";
  
          GameSnapShot gs = JSON.parseObject(jsonString, GameSnapShot.class);
  
          Block block = gs.getBlock();
          Assert.assertEquals(5, block.getBoxList().size());
          Assert.assertEquals(1, block.getBoxList().get(0).getX());
          Assert.assertEquals(1, block.getBoxList().get(0).getY());
          Assert.assertEquals(0, block.getBoxList().get(2).getX());
          Assert.assertEquals(2, block.getBoxList().get(2).getY());
          
          Box[][] boxs = gs.getBoxs();
          Assert.assertEquals(20, boxs.length);
          Assert.assertEquals(12, boxs[0].length);
      }
  
      public static class GameSnapShot implements Serializable {
  
          /**
           * 
           */
          private static final long serialVersionUID = 8755961532274905269L;
          protected Box[][]         boxs             = null;
          private Block             block;
  
          public GameSnapShot(){
              super();
          }
  
          public GameSnapShot(Box[][] boxs, Block block){
              super();
              this.boxs = boxs;
              this.block = block;
          }
  
          public Box[][] getBoxs() {
              return boxs;
          }
  
          public void setBoxs(Box[][] boxs) {
              this.boxs = boxs;
          }
  
          public Block getBlock() {
              return block;
          }
  
          public void setBlock(Block block) {
              this.block = block;
          }
  
      }
  
      public static class Box {
  
          @JSONField(name = "dx")
          private int x;
  
          @JSONField(name = "dy")
          private int y;
  
          public int getX() {
              return x;
          }
  
          public void setX(int x) {
              this.x = x;
          }
  
          public int getY() {
              return y;
          }
  
          public void setY(int y) {
              this.y = y;
          }
  
      }
  
      public static class Block {
  
          private List<Box> boxList = new ArrayList<Box>();
  
          private Box       centerBox;
  
          private int       offsetX;
  
          private int       offsetY;
  
          public int getOffsetX() {
              return offsetX;
          }
  
          public void setOffsetX(int offsetX) {
              this.offsetX = offsetX;
          }
  
          public int getOffsetY() {
              return offsetY;
          }
  
          public void setOffsetY(int offsetY) {
              this.offsetY = offsetY;
          }
  
          public Box getCenterBox() {
              return centerBox;
          }
  
          public void setCenterBox(Box centerBox) {
              this.centerBox = centerBox;
          }
  
          public List<Box> getBoxList() {
              return boxList;
          }
  
          public void setBoxList(List<Box> boxList) {
              this.boxList = boxList;
          }
  
      }
  }
  