我想反序列化一个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