content: package data.media.writeAsArray;
  
  import java.lang.reflect.Type;
  import java.util.ArrayList;
  import java.util.List;
  
  import com.alibaba.fastjson.parser.DefaultJSONParser;
  import com.alibaba.fastjson.parser.JSONLexer;
  import com.alibaba.fastjson.parser.JSONToken;
  import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
  
  import data.media.Image;
  import data.media.Media;
  import data.media.MediaContent;
  
  public class MediaContentDeserializer implements ObjectDeserializer {
  
      MediaDeserializer mediaDeser = new MediaDeserializer();
      ImageDeserializer imageDesc  = new ImageDeserializer();
  
      @SuppressWarnings("unchecked")
      public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
          JSONLexer lexer = parser.getLexer();
  
          parser.accept(JSONToken.LBRACKET, JSONToken.LBRACKET);
          Media media = mediaDeser.deserialze(parser, Media.class, "media");
          parser.accept(JSONToken.COMMA, JSONToken.LBRACKET);
          
          parser.accept(JSONToken.LBRACKET, JSONToken.LBRACKET);
          List<Image> images = new ArrayList<Image>();
          int index = 0;
          for (;;) {
              Image image = imageDesc.deserialze(parser, Image.class, index);
              images.add(image);
              index++;
              if (lexer.token() == JSONToken.COMMA) {
                  lexer.nextToken(JSONToken.LBRACKET);
              } else {
                  break;
              }
          }
          parser.accept(JSONToken.RBRACKET, JSONToken.RBRACKET);
          
          parser.accept(JSONToken.RBRACKET, JSONToken.EOF);
          
          MediaContent content = new MediaContent();
          content.setMedia(media);
          content.setImages(images);
          return (T) content;
      }
  
      public int getFastMatchToken() {
          return 0;
      }
  
  }