001package net.bramp.ffmpeg.adapter; 002 003import com.google.gson.JsonDeserializationContext; 004import com.google.gson.JsonDeserializer; 005import com.google.gson.JsonElement; 006import com.google.gson.JsonParseException; 007import java.lang.reflect.Type; 008 009/** Gson type adapter that deserializes booleans from both boolean and integer JSON values. */ 010public class BooleanTypeAdapter implements JsonDeserializer<Boolean> { 011 @Override 012 public Boolean deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) 013 throws JsonParseException { 014 if (json.isJsonPrimitive() && json.getAsJsonPrimitive().isBoolean()) { 015 return json.getAsBoolean(); 016 } 017 018 if (json.isJsonPrimitive() && json.getAsJsonPrimitive().isString()) { 019 String jsonValue = json.getAsString(); 020 if (jsonValue.equalsIgnoreCase("true")) { 021 return true; 022 } else if (jsonValue.equalsIgnoreCase("false")) { 023 return false; 024 } else { 025 return null; 026 } 027 } 028 029 return json.getAsInt() != 0; 030 } 031}