我有以下代码来说明我的问题:
首先,我定义 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]
最佳答案
有时你需要提到猫或狗。我使用 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;
}
关于java - 在这种情况下如何为 GSON 指定通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45028117/