001package net.bramp.ffmpeg.adapter; 002 003import com.google.gson.*; 004import java.lang.reflect.AnnotatedType; 005import java.lang.reflect.Field; 006import java.lang.reflect.Type; 007import net.bramp.ffmpeg.probe.FFmpegStream; 008 009public class FFmpegStreamSideDataAdapter implements JsonDeserializer<FFmpegStream.SideData> { 010 @Override 011 public FFmpegStream.SideData deserialize( 012 JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) 013 throws JsonParseException { 014 if (!(jsonElement instanceof JsonObject)) return null; 015 try { 016 Object sideData = 017 Class.forName(FFmpegStream.SideData.class.getName()).getConstructor().newInstance(); 018 Field[] fields = Class.forName(FFmpegStream.SideData.class.getName()).getFields(); 019 for (Field field : fields) { 020 String fieldName = field.getName(); 021 AnnotatedType annotatedType = field.getAnnotatedType(); 022 Object deserialize = 023 jsonDeserializationContext.deserialize( 024 ((JsonObject) jsonElement).get(fieldName), annotatedType.getType()); 025 field.set(sideData, deserialize); 026 } 027 return (FFmpegStream.SideData) sideData; 028 } catch (Exception exception) { 029 return null; 030 } 031 } 032}