Как преобразовать json объект часового пояса в java TimeZone, используя Gson? - PullRequest
1 голос
/ 01 февраля 2020

Сервер выдает следующий ответ:

"timezone": {
    "gmtOffset": 7,
    "timeZoneId": "Asia/Novosibirsk",
    "dstOffset": 7
}

Я использую Gson для анализа этого json. Я пытался добавить поле private TimeZone timezone в мой DTO, но Gson не понимает и выдает ошибку:

java .lang.RuntimeException: не удалось вызвать publi c java .util.TimeZone () без аргументов

Есть ли простой способ решить эту проблему?

1 Ответ

2 голосов
/ 02 февраля 2020

Это чьи-то пользовательские поля установлены. Только пользовательский десериализатор может помочь.

public class TimeZoneDeserializer implements JsonDeserializer<TimeZone> {

    @Override
    public TimeZone deserialize(
            JsonElement jsonElement,
            Type type,
            JsonDeserializationContext jsonDeserializationContext
    ) throws JsonParseException {
        String timezoneId = jsonElement
                .getAsJsonObject()
                .get("timeZoneId")
                .getAsString();

        return TimeZone.getTimeZone(timezoneId);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...