[英]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 達到相同的效果。
正如Atmas所指出的,我需要做的就是在字段中添加@SerializedName
注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.