У меня есть JSON, который содержит:Gson: Deserialize Json в абстрактный класс
{"timeZone": "America/Los_Angeles"}
среди многих других ключей, и я десериализация его в java.util.TimeZone
. TimeZone
- это просто поле в классе, которое я хочу создать с помощью этого json.
Вопрос заключается в том, что TimeZone
является абстрактным классом, и он должен быть создан с:
public static synchronized TimeZone getTimeZone(String ID) {
return getTimeZone(ID, true);
, который использует конкретный класс ZoneInfo
для создания экземпляра. Однако десериализатор по умолчанию вызывает конструктор TimeZone
. Так что я получил:
java.lang.RuntimeException: Failed to invoke public java.util.TimeZone() with no args
Интересно, как настроить Gson для создания экземпляра TimeZone
из приведенного выше JSON?
Вы пытаетесь использовать не абстрактный класс, как SimpleTimeZone? – JAVAC
Id риск сказать, что это невозможно. Сериализатор должен создавать экземпляр для создания выходного значения, а абстрактные классы не могут быть созданы. – Felype
@JAVAC Это из класса библиотеки, который я не могу изменить, к сожалению. –