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; } }