2017-08-01 197 views
0

我需要與GSON庫的幫助,基本上我有反序列化這樣定義一個包裝類:GSON,反序列化包裝

static class WrapperClass { 
    public int value; 
    private final String otherData; 

    public WrapperClass(String otherData) { 
     this.otherData = otherData; 
    } 

} 

,我不得不「jsonize」這個類有這樣的領域:

private final WrapperClass wrappedData = new WrapperClass("other data"); 

包裝類的序列化是非常簡單的:

@Override 
public JsonElement serialize(WrapperClass src, Type typeOfSrc, JsonSerializationContext context) { 
    return context.serialize(src.value); 
} 

的問題是去SER ialization方面,我不應該重新實例化WrapperClass對象,因爲它已經在默認情況下,我只需要反序列化它的值,這可能與此gson庫?

+0

你能告訴我們你在反序列化方面有什麼嗎? – Jonathan

+0

@Jonathan這就是問題!我不知道如何反序列化json而無需重新實例化WrapperClass,因爲它已經在對象中 – Emax

回答

1

所以,你想要做什麼:「閱讀」一些JSON字符串的內容和「覆蓋」現有的對象。

我不知道有內置的方法來做到這一點。除此之外:在的覆蓋下做一些這種複雜性聽起來也是錯誤的方法。

因此,我的建議是:明確區分這些責任。含義:而不是創建一個將JSON數據「合併到」現有對象中的(幾乎違反直覺的)解決方案:明確地做到這一點,它一步一步地完成。像:

  • 讀取JSON數據,並在去序列化對象中的信息反序列化到一個或多個對象
  • 然後有一個另一特殊的組件「更新」你的「老」對象