Ich habe eine Klasse Shop
Deserialisieren Arraylist <Interface> mit Gson
public class Shop {
private String name;
private ArrayList<Fruitable> fruits;
public String toJson() {
Gson gson = new Gson();
return gson.toJson(this, Shop.class)
}
}
Apple
und Orange
sind die beiden Klassen, die Fruitable
Schnittstelle implementiert.
Fruitable
:
public interface Fruitable {
String getColor();
}
Apple
:
public class Apple implements Fruitable {
private int Id;
@Override
public String getColor() {
return "red";
}
}
Orange
:
public class Orange implements Fruitable {
private int Id;
@Override
public String getColor() {
return "orange";
}
}
Ich kann Shop
mit GSON serialisieren, jedoch kann ich es nicht richtig deserialisieren.
Wenn ich deserialize, hat die ArrayList<Fruitable>
Objekte, aber die Objekte sind null
.
Der Grund dafür ist, dass GSON eine konkrete Instanz benötigt, um in das Verzeichnis zu gelangen.
Ich weiß, ich JsonDeserializer
in Shop
umsetzen können.
Allerdings kann ich einige Deserialisieren Mechanismus implementieren, innerhalb Apple
und Orange
so werden sie sich deserialisieren?
Wenn das nicht möglich ist, und ich habe einen Deserializer in Shop
zu schreiben, kann ich Code schreiben Sie einfach den fruits
Eigenschaft deserialisiert und nicht die anderen Eigenschaften, d. GSON wird die übrigen Eigenschaften deserialisieren, wenn sie konkrete Instanzen sind?