Java gson在序列化时替换成员对象

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

我试图为输出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”}

可能是这样的:

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);