我喜欢这样:
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
}
}
答案 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();