[英]How to specify generic type in this case for GSON
我有以下代碼來說明我的問題:
首先,我定義Box類和Cat類
public class Box<T> {
private T data;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
public class Cat {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
然后我定義了GsonUtils
(靜態類),旨在將一些json字符串序列化為Box<T>
的對象
public class GsonUtils {
public static <T> Box<T> json2BoxObject(String json) {
Type tpe = new TypeToken<Box<T>>(){}.getType();
return new GsonBuilder().create().fromJson(json, tpe);
}
}
json2BoxObject
方法提供Cat
類型,那么我會得到一個Box<Cat>
json2BoxObject
方法提供Dog
Type,那么我會得到一個Box<Dog>
但是,我不知道如何為json2BoxObject
提供一個類型,這是我要問的問題
使用上面的代碼,給json2BoxObject
提供json字符串{"data":{"name":"Kitty","age":1}}
,我想得到一個Box<Cat>
對象,但我得到一個Box [地圖]
在某些時候你需要提到貓或狗。 我使用Box創建了Type,並在json2Java
方法中傳遞了它。
String msg ="{\"data\":{\"name\":\"Kitty\",\"age\":1}}";
Type type = new TypeToken<Box<Cat>>(){}.getType();
Box<Cat> obj = GsonUtils.json2Java(msg, type);
System.out.println(obj);
而json2Java
方法是:
public static <T> Box<T> json2Java(String json, Type type) {
Box<T> box = new GsonBuilder().create().fromJson(json, type);
return box;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.