GSON analisando variável de tipo não especificada

Eu analiso a resposta JSON do servidor com a biblioteca GSON. Backend pessoal às vezes me dizem: "Nós não podemos especificar o tipo de variável em JSON por algum motivo" (antigo php, eles não sabem como fazê-lo e assim por diante e assim por diante). GSON gosta de digitar forte em seu modelo de objeto. Portanto, não posso analisar o objeto como String.

GSON espera por:

{
    "service":{
        "description":null,
        "name":"Base",
        "id":"4c7a90410529"
    }
}

Mas fica (dados vazios):

"service": ""

E eu fico

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1396

Qual é a melhor prática para analisar essa resposta?

Outra questão: Como posso construir o objeto, ele pode reconhecer a variável Integer que retornou de tempos em tempos como Integer ou String? O mesmo problema no lado do servidor.

"data": "1"

ou

"data": 1

Eu sei - devemos usar tipos específicos em Java. Mas às vezes vale a pena fazer concessões,
obrigado

EDITAR: Minha solução baseada na resposta do desenvolvedor Java.
A classe ServiceDeserializer desserializa todos os objetos, dependendo do seu valor interno.

public class ServiceDeserializer implements JsonDeserializer<ServiceState>{

    @Override
    public ServiceState deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {

        String name = "";
        String uuid = "";
        String description = "";

        if (json.isJsonObject()) {
            JsonObject obj = json.getAsJsonObject();

            if (!obj.get("name").isJsonNull()) {
                name = obj.get("name").getAsString();
            }
            if (!obj.get("uuid").isJsonNull()) {
                uuid = obj.get("uuid").getAsString();
            }
            if (!obj.get("description").isJsonNull()) {
                description = obj.get("description").getAsString();
            }
        }
        return new ServiceState(name, uuid, description);
    }

}

E meu construtor GSON com adaptador de tipo para ServiceState.

Gson gson = new GsonBuilder()
    .registerTypeAdapter(ServiceState.class, new ServiceDeserializer())
    .create();

questionAnswers(4)

yourAnswerToTheQuestion