簡體   English   中英

遞歸自定義 Gson 解串器

[英]Recursive custom Gson deserializer

我需要創建一個自定義 Gson 反序列化器,當遞歸調用 go 成對象並使用相同的概念反序列化它們時

對於這個例子,讓我們創建一個 JSON object:

{
  "name": "Hello world!",
  "foo": {
    "bar": [12, 13, 14],
    "type": "A"
  }
}

然后是類,對於這個演示,有 2 個類 MainOutputClass 從反序列化器調用,反序列化器應該從 JSON 中的foo object 反序列化子類

至於@ExposeAs() ,這是為了告訴反序列化器使用哪個 JSON object。

public class MainOutputClass {

    @ExposeAs("name")
    private String nameString;

    @ExposeAs("foo")
    private SubClass subClass;

}

最后是遞歸演示的子類:

public class SubClass {

    @ExposeAs("bar")
    private List<Integer> bars;

    @ExposeAs("type")
    private String type;

}

我設法創建了一個反序列化器,可以完美地反序列化主要目標 class,但我似乎無法讓它適用於非原始子類。

我知道這是一個非常奇怪的問題,但我找不到任何資源來解決這個問題。 感謝您提供任何幫助,感謝您抽出寶貴時間閱讀本文。

OP 正在尋找 @SerializedName 注釋,該注釋用於翻譯名稱,因為它應該存在於 JSON 格式中,而不是字段名稱在 Java 中。

對於后代,如果您使用 Jackson 解析器,您可以使用 @JsonProperty 達到相同的效果。

何時使用 @JsonProperty 屬性以及它的用途是什么?

正如Atmas所指出的,我需要做的就是在字段中添加@SerializedName注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM