JSON是一种轻量级的数据交换格式,它可以描述复杂的结构数据。在Java中,我们可以使用Gson库来将JSON数据转换成Java对象,但是当我们需要将JSON数据转换成特定的泛型类型时,就需要一些特殊的处理了。
public static <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException {
return (T) fromJson(json, (Type) classOfT);
}
public static <T> T fromJson(String json, Type typeOfT) throws JsonIOException, JsonSyntaxException {
if (json == null) {
return null;
}
StringReader reader = new StringReader(json);
T target = (T) fromJson(reader, typeOfT);
if (target instanceof Closeable) {
try {
((Closeable) target).close();
} catch (IOException ignored) {
}
}
return target;
} 在上面的代码中,我们可以看到fromjson方法可以接收一个Type类型的参数,这个参数可以表示任何特定的泛型类型。
下面是一个使用Gson转换泛型类型的例子:
String json = "[{ \"name\": \"Alice\", \"age\": 20 },{ \"name\": \"Bob\", \"age\": 25 }]";
Type listOfPersonsType = new TypeToken<List<Person>>() {}.getType();
List<Person> persons = gson.fromJson(json, listOfPersonsType); 在上面的例子中,我们首先定义了一个TypeToken类型的变量listOfPersonsType,它可以表示一个List类型,这个List的元素是Person类型。
然后我们调用gson的fromJson方法来将JSON数据转换成List类型的对象,同时使用listOfPersonsType参数来告诉Gson我们需要的是一个List<Person>类型的对象。
使用Gson和TypeToken可以让我们在处理泛型类型时更加方便。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论