我有以下代码来说明我的问题:
首先,我定义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);
}
}
Cat
方法提供json2BoxObject
类型,那么我会得到Box<Cat>
Dog
类型到json2BoxObject
方法,那么我会得到Box<Dog>
但是,我不知道如何为json2BoxObject
提供类型,这是我要问的问题
使用上面的代码,给json2BoxObject
json字符串{"data":{"name":"Kitty","age":1}}
,我想得到一个Box<Cat>
对象,但我得到一个Box [Map]
答案 0 :(得分:0)
在某些时候你需要提到猫或狗。我使用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;
}