2017-04-23 31 views
0

我試圖爲輸出JSON文件設計一個更平坦的結構。我如何做到這一點,以便當我使用gson.toJson()成員對象將使用對象的ID序列化,而不是序列化整個事情?Java gson在序列化時替換成員對象

例如:

class Foo { 
    public int id; 
} 

class Bar { 
    public Foo foo = new Foo(); 
    public String data = "something"; 
} 

我想gson.toJson(bar)輸出是這樣的:{"foo": 1029, "data":"something"}

回答

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

這工作,而是序列化是什麼? – George

+0

你是什麼意思?這段代碼應該輸出你想要的內容 –

+0

對不起,我的意思是反序列化。我通過使用'JsonDeserializer '發現了它。 – George