@Override
    public Collection<PluginComponent> deserialize(JsonElement element, Type type, JsonDeserializationContext context)
        throws JsonParseException
    {
        JsonObject obj = element.getAsJsonObject();
        JsonArray components = obj.getAsJsonArray("components");
        List<PluginComponent> values = new ArrayList<PluginComponent>();
        if(components != null && components.isJsonArray())
        {
            for(JsonElement component : components)
                values.add(gson.fromJson(component, PluginComponent.class));
        }
        return values;
    }
@ Override public Collection < PluginComponent > deserialize ( JsonElement element , Type type , JsonDeserializationContext context ) throws JsonParseException { JsonObject obj = element . getAsJsonObject ( ) ; JsonArray components = obj . getAsJsonArray ( "components" ) ; List < PluginComponent > values = new ArrayList < PluginComponent > ( ) ; if ( components != null && components . isJsonArray ( ) ) { for ( JsonElement component : components ) values . add ( gson . fromJson ( component , PluginComponent . class ) ) ; } return values ; }
Gson invokes this call-back method during deserialization when it encounters a field of the specified type.
@param element The Json data being deserialized
@param type The type of the Object to deserialize to
@param context The JSON deserialization context
@return The plugin components