使用gson反序列化自定义对象类型 - 无法反序列化Map

时间:2016-10-25 00:57:41

标签: java json gson

我有一个方法,它使用gson反序列化自定义对象。该方法接受特定的类类型,以便它可以反序列化任何类型的对象。它看起来像这样:

public <T> T getMyCustomObject(String jsonString, class<T> classType) {
    final Gson gson = new Gson();
    T obj = gson.fromJson(jsonString, classType);
    return obj;
}

现在,我想序列化一个来自DynamoDB的条目Map<String, AttributeValue> 我对该函数的方法调用如下:

Type typeOfHashMap = new TypeToken<Map<String, AttributeValue>>() { }.getType();
Map<String, AttributeValue> attributeValue = getMyCustomObject(jsonString, typeOfHashMap.getClass());

我的json字符串完全有效,但后来收到异常 -

java.lang.ClassCastException: com.google.gson.internal.$Gson$Types$ParameterizedTypeImpl cannot be cast to java.util.Map

我究竟做错了什么?我采用泛型类型并且Java类型擦除错误了吗?或者我应该不使用TypeToken?

0 个答案:

没有答案