Desserializando a matriz json usando gson?

Eu tenho meu json como:

{
   "status": 200,
   "data": [
       {
            "catId": 638,
            "catName": "Helena Bonham Carter",
            "catUniqueName": "helena-bonham-carter",
            "catSlug": ""
       },
       {
        ...
       }
   ]
}

Meu modelo de categoria como:

public class Category {

    private double catId;
    private String catName;
    private String catUniqueName;
    private String catSlug;
}

E meu desserializador personalizado gson é o seguinte:

Type listType = new TypeToken<ArrayList<Category>>(){}.getType();

Gson gson = new GsonBuilder()
            .registerTypeAdapter(listType, new CategoryDeserializer())
            .create();

private class CategoryDeserializer implements JsonDeserializer {
    @Override
    public Category deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
            throws JsonParseException {
        Gson gson = new Gson();
        return gson.fromJson(((JsonObject) json).get("data"), typeOfT);
    }
}

Estou usando a biblioteca Retrofit, que usa o gson para serializar / desserializar objetos json. Eu passo esse desserializador gson personalizado para atualização, mas isso me dá um erro. Você pode me dizer onde eu errei enquanto desrializava?

Erro:

java.util.ArrayList cannot be cast to com.compzets.app.models.Category

Resultado esperado:

eu queroArrayList of Category de json.

questionAnswers(2)

yourAnswerToTheQuestion