Java gson在序列化时替换成员对象
我试图为输出JSON文件设计一个更平坦的结构。当我使用Java gson在序列化时替换成员对象,java,gson,android,Java,Gson,Android,我试图为输出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”:“somethin
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”}
可能是这样的:
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;
}
}
你到底是什么意思?这段代码应该输出你想要的。对不起,我是说反序列化。我通过使用
JsonDeserializer
解决了这个问题。
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Bar.class, new FooBarAdapter());
return gsonBuilder.create().toJson(bar);