Eu gostaria de preencher campos de objetos com valores do Json no construtor de objetos.
public AbstractObject(String jsonSerializedObject) {
Gson gson = new Gson();
// Fill object values from json in *current* object
}
Isso é possível?
Respostas:
4 para resposta № 1O Gson não suporta preencher o objeto existente (ainda). Veja a questão 431 aqui.
http://code.google.com/p/google-gson/issues/detail?id=431&q=existing
2 para resposta № 2
Você pode usar um InstanceCreator para fornecer o objeto que deseja preencher.
final Foo existing;
InstanceCreator<Foo> creator = new InstanceCreator<Foo>() {
public Foo createInstance(Type type) { return existing; }
}
Gson gson = new GsonBuilder().registerTypeAdapter(Foo.class, creator).create();
Foo value = gson.fromJson(jsonString, Foo.class);
// value should be same as existing
0 para resposta № 3
http://www.javacreed.com/gson-typeadapter-example/
Substitua o construtor pelo objeto que você deseja preencher e atualize o objeto no read(jsonReader: JsonReader)
método.
Exemplo em Kotlin:
class TypeAdapterGen : TypeAdapter<Gen> {
var mGen: Gen
constructor(gen: Gen) : super(){
mGen = gen
}
}