簡體   English   中英

Java GSON:反序列化具有不同類型的字段

[英]Java GSON: Deserializing a field which has different types

我遇到了反序列化json的問題,其中存在一個字段可以具有多種類型,而該類型由另一個字段確定。

為了使這個問題更清楚,請在json下面的3個示例中將其稱為Extra,它的字段Unit始終是字符串,字段Value可以是十進制(示例1),對象(示例2)或對象列表(示例3)取決於字段Unit的值。

我對GSON相當陌生,不確定如何解決此問題,從看API來看,我似乎必須編寫一個自定義解串器? 在該示例中,一個字段的類型取決於另一個字段,我將如何編寫一個?

Example 1
Extra {
Unit:"Decimal"
Value:0.0
}

Example 2
Extra {
Unit:"Object"
Value:{object}
}

Example 3
Extra {
Unit:"List of objects"
Value:[{object}
{object},
{object},
]
}

嘗試以下類似的操作:以一個bean為例:ExampleBean在ExampleBean中,繼承另一個您的值列表,例如:列表值;

然后嘗試將GSON轉換為List,如下所示

public static List getListFromGsonString(String jsonString){
        Gson gson = new Gson();
        Type listType = new TypeToken() {}.getType();
        List list = (List)gson.fromJson(jsonString, listType);
        return list;
    }

這就是我們在項目中所做的。 如果不適用,請忽略。

暫無
暫無

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

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