Разбор GSON неопределенной переменной типа

Я анализирую ответ сервера JSON с библиотекой GSON. Парни из бэкэнда иногда говорят мне:Мы можем'по какой-то причине не могу указать тип переменной в JSON (Старый PHP, они нене знаю как это сделать и тд и тп). GSON любит строгую типизацию в своей объектной модели. Так что я могу't разобрать объект как строку.

GSON ждать:

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

Но он получает (пустые данные):

"service": ""

И я получаю

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

Какова лучшая практика для анализа такого ответа?

Другой вопрос: как мне построить объект, он может распознавать переменную Integer, которая время от времени возвращалась как Integer или как String? Та же проблема на стороне сервера.

"data": "1"

или же

"data": 1

Я знаю - мы должны использовать определенные типы в Java. Но иногда стоит пойти на уступки,

Спасибо

РЕДАКТИРОВАТЬ: Мое решение на основе Java Developer 'ответ.

Класс ServiceDeserializer десериализует каждый объект в зависимости от его внутреннего значения.

public class ServiceDeserializer implements JsonDeserializer{

    @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);
    }

}

И мой GSON конструктор с адаптером типа для ServiceState.

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

Ответы на вопрос(4)

Ваш ответ на вопрос