如何反序列化POJO包含HashTable?

时间:2015-11-04 06:40:39

标签: gson resteasy json-deserialization

我喜欢这样:

public class Test implements java.io.Serializable {
    private static final long serialVersionUID = 1L;
    private String hash;
    private java.util.Hashtable<Integer, Long> myTempTable;
    public java.util.Hashtable<Integer, Long> getMyTempTable() {
        return this.myTempTable;
    }
    public void setMyTempTable(java.util.Hashtable<Integer, Long> myTempTable) { this.myTempTable = myTempTable; }
    //And some few variables
}

作为回应,我以JSON格式获得此POJO,但在将此JSON转换为&#34;测试&#34;像这样的java对象。

gson.fromJson(tempString, Test.class);

正在给出错误

java.lang.IllegalArgumentException: Can not set java.util.Hashtable field <package_name>.Temp.myTempTable to java.util.LinkedHashMap

为什么GSON将HashTable转换为LinkedHashMap? 这个错误意味着什么?

更新:JSON文件为

{
    "hash": "abc",
    "myTempTable": {
    "1": 30065833999,
    "2": 34364325903,
    "3": 536872959
    }
}

1 个答案:

答案 0 :(得分:0)

将对象转换为JSON字符串。

    public static <T> String convertObjectToStringJson(T someObject, Type type) {
        Gson mGson = new Gson();
        String strJson = mGson.toJson(someObject, type);
        return strJson;
    }

用于将JSON字符串转换为Object。

    public static <T> T getObjectFromJson(String json, Type type) {
        Gson mGson = new Gson();
        if (json != null) {
             if (json.isEmpty()) {
                    return null;
             }
        }
        return mGson.fromJson(json, type);
    }

,其中 类型是您的对象的类型。

例如:

for object:

new TypeToken<YOUR_POJO>(){}.getType();

列表:

new TypeToken<List<YOUR_POJO>>(){}.getType();
相关问题