如何使用GSON将JSON反序列化为相应的通用Java类型?

如何使用GSON将JSON反序列化为相应的通用Java类型?,java,json,deserialization,gson,Java,Json,Deserialization,Gson,我想将一个JSON对象(使用GSON,因为我已经使用它来对对象进行searialization)反序列化为Map类型的常规映射。它应该创建与相应JSON类型对应的类型的对象,即此JSON对象 { "docID" : "a12345", "relation" : ["1", "2", "3"], "title" : { "de" : "German Title", "en" : "English Title"} } 应在映射中使用以下类型

我想将一个JSON对象(使用GSON,因为我已经使用它来对对象进行searialization)反序列化为
Map
类型的常规映射。它应该创建与相应JSON类型对应的类型的对象,即此JSON对象

{ 
    "docID" : "a12345",
    "relation" : ["1", "2", "3"],
    "title" : { "de" : "German Title",
                "en" : "English Title"}
}
应在
映射
中使用以下类型的条目反序列化:
字符串
字符串
),(
字符串
列表
),(
字符串
映射

我尝试使用以下代码:

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());
}
        Object ret = JSONValue.parse(jsonString);
        return (List<Map<String, Object>>) ret;

为什么使用GSON不那么容易?

JSON.simple反序列化到的结构是一个映射,其中每个条目键都是一个字符串,每个条目值都是一个简单的数据类型或另一个映射

不幸的是,用Gson反序列化到这样的结构并不像我认为的那么简单,需要几十行代码。我在上贴了一个这样做的例子。(搜索短语“Gson代码将任何JSON对象转换为映射”,直接跳到相关示例。)

这篇博文还包括一个使用Jackson只需一行代码即可完成相同任务的示例。(我强烈建议尽可能放弃Gson,转而支持杰克逊。)