我想反序列化一個JSON對象(使用GSON,因爲我已經使用它來進行對象的搜索)到一個類型爲Map<String, Object>
的普通映射。它應該創建的那些對應於根據JSON類型類型的對象,即該JSON對象如何使用GSON將JSON反序列化爲相應的泛型Java類型?
{
"docID" : "a12345",
"relation" : ["1", "2", "3"],
"title" : { "de" : "German Title",
"en" : "English Title"}
}
應當以Map<String, Object>
與以下類型的條目被反序列化:
(String
,String
),(String
,List<String>
),(String
,Map<String, String>
)。
我試圖用以下代碼:
class Dictionary_ extends HashMap<String, Object> {
// nothing to do
};
private static final GsonBuilder GSON_BUILDER = new GsonBuilder();
public Map<String, Object> deserializeJsonString(String jsonString) {
Dictionary_ d = new Dictionary();
return GSON_BUILDER.create().fromJson(jsonString, d.getClass());
}
但隨後是所得類型創建的對象的如下:
(String
,Object
),(String
,Object
),(String
,Object
) ,我無法將這些對象轉換爲相應的「真實」類型,因爲我得到了類轉換異常。
我無法使用POJO,因爲我收到的數據沒有按類成員的預定義結構。
那麼,我如何能夠反序列化一般Java類型中的這種通用數據呢?
更新:
我只是想用JSON簡單的實現它,並且它由下面的代碼工作開箱很容易:
Object ret = JSONValue.parse(jsonString);
return (List<Map<String, Object>>) ret;
爲什麼它不工作是容易GSON ???
偉大的比較帖子 – LiorH