gpt4 book ai didi

java - 在这种情况下如何为 GSON 指定通用类型

转载 作者:行者123 更新时间:2023-12-02 10:52:05 24 4
gpt4 key购买 nike

我有以下代码来说明我的问题:

首先,我定义 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);
}

}
  1. 如果我可以提供 Cat输入 json2BoxObject方法,那么我会得到 Box<Cat>
  2. 如果我可以提供 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com