1

我想在对象构造函数中用来自 Json 的值填充对象字段。

public AbstractObject(String jsonSerializedObject) {
    Gson gson = new Gson();

    // Fill object values from json in *current* object
}

这可能吗?

4

3 回答 3

4

Gson 还不支持“填充现有对象”。请参阅此处的问题 431。

http://code.google.com/p/google-gson/issues/detail?id=431&q=existing

于 2012-11-13T20:19:25.080 回答
2

您可以使用 InstanceCreator 来提供要填充的对象。

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
于 2016-03-11T08:26:38.877 回答
0

http://www.javacreed.com/gson-typeadapter-example/

用要填充的对象覆盖构造函数,然后在read(jsonReader: JsonReader)方法中更新对象。

Kotlin 中的示例:

class TypeAdapterGen : TypeAdapter<Gen> {

    var mGen: Gen

    constructor(gen: Gen) : super(){
        mGen = gen
    }
}
于 2017-11-02T15:18:32.870 回答