Próbuję użyć Gson z interfejsem:Deserializowanie interfejsu za pomocą Gson?
public interface Photo {
public int getWidth();
}
public class DinosaurPhoto implements Photo {
...
}
public class Wrapper {
private Photo mPhoto; // <- problematic
}
...
Wrapper wrapper = new Wrapper();
wrapper.setPhoto(new DinosaurPhoto());
Gson gson = new Gson();
String raw = gson.toJson(wrapper);
// Throws an error since "Photo" can't be deserialized as expected.
Wrapper deserialized = gson.fromJson(raw, Wrapper.class);
Ponieważ klasa Wrapper posiada zmienną składową, która jest typu Photo, w jaki sposób przejść o deserializacji go za pomocą Gson?
Dzięki
Cześć Bruce, więc myślę, że jestem wciągnięty w to, co jest, wygląda na to, że Gson po prostu nie obsługuje jeszcze polimorficznej deserializacji. Widziałem na twojej stronie, że masz kilka przykładów Jacksona (które zawierają polimorfizm). Czy w tym momencie poleciłbyś korzystanie z jacksona na Gsonie? Dzięki – user291701
Tak, polecam korzystanie z Jackson over Gson, jak opisano w http://programmerbruce.blogspot.com/2011/07/gson-v-jackson-part-6.html. Jackson ma przyzwoitą wbudowaną obsługę polimorfizmu, a także inne korzyści, takie jak znacznie lepsza wydajność. Zainteresowanym post na temat deserializacji polimorficznej z Jacksonem znajduje się na stronie http://programmerbruce.blogspot.com/2011/05/deserialize-json-with-jackson-into.html –