Ich habe json das enthält:Gson: Deserialize Json in abstrakte Klasse
{"timeZone": "America/Los_Angeles"}
unter vielen anderen Tasten, und ich möchte es in java.util.TimeZone
deserialisieren. TimeZone
ist nur ein Feld in einer Klasse, die ich mit diesem json instanziieren möchte.
Das Problem ist, dass TimeZone
eine abstrakte Klasse ist, und es sollte mit instanziert werden:
public static synchronized TimeZone getTimeZone(String ID) {
return getTimeZone(ID, true);
, die eine konkrete Klasse verwendet ZoneInfo
zu instanziiert. Der Deserializer ruft jedoch standardmäßig den Konstruktor TimeZone
auf. Also habe ich:
java.lang.RuntimeException: Failed to invoke public java.util.TimeZone() with no args
Ich frage mich, wie Gson zu konfigurieren, dass ein TimeZone
aus der obigen json instanziiert?
haben Sie versucht, nicht abstrakte Klasse wie SimpleTimeZone zu verwenden? – JAVAC
Id Gefahr, dies zu sagen ist nicht möglich. Der Serializer muss instanziiert werden, um den Ausgabewert zu erstellen, und abstrakte Klassen können nicht instanziiert werden. – Felype
@JAVAC Das kommt aus einer Bibliotheksklasse, die ich leider nicht ändern kann. –