我正在尝试为输出JSON文件设计一个更平的结构。我如何做到这一点,当我使用gson.toJson()
时,成员对象将使用对象的ID序列化而不是序列化整个事物?
例如:
class Foo {
public int id;
}
class Bar {
public Foo foo = new Foo();
public String data = "something";
}
我希望gson.toJson(bar)
输出如下内容:{"foo": 1029, "data":"something"}
。
答案 0 :(得分:1)
也许是这样的:
public class FooBarAdapter implements JsonSerializer<Bar> {
@Override
public JsonElement serialize(Bar bar, Type typeOfObj,
JsonSerializationContext context)
{
JsonObject obj = new JsonObject();
obj.addProperty("foo", bar.foo.id);
obj.addProperty("data", bar.data);
return obj;
}
}
然后当你想序列化它时:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Bar.class, new FooBarAdapter());
return gsonBuilder.create().toJson(bar);