gpt4 book ai didi

java - 使用集合处理 Gson 中的类型检查

转载 作者:行者123 更新时间:2023-12-01 16:38:38 25 4
gpt4 key购买 nike

嗨,我正在使用 Gson 进行 Json 解析。考虑我有两个 pojo 类,如下所示:

class Sample1{

}
class Sample2{

}

为了自动解析我的响应,我发送了这些类。在以下情况下它会给我编译时异常:

public static Sample2 parseResponse(String jsonString) {
Gson gson = new Gson();
return gson.fromJson(jsonString, Sample1.class);
// it gives me exception as I am sending Sample1 for parsing and returning as Sample2
}

但是在收集的情况下,它不会给我这个异常(exception)

public static ArrayList<Sample2> parseResponse(String jsonString) {
Type collectionType = new TypeToken<ArrayList<Sample1>>(){}.getType();
Gson gson = new Gson();
return gson.fromJson(jsonString, collectionType);
}

对于上述集合场景,它没有给出任何异常,至于集合,我将其作为类型传递。有没有更好的办法来处理。

最佳答案

第二个示例可以编译,因为 Type 没有泛型类型参数,因此 Gson.fromJson(String, Type) 是以泛型类型参数的方式实现的用作返回类型未绑定(bind)。

但是,您可以自己编写一个实用程序方法,该方法采用 TypeToken 而不是 Type:

public static <T> T fromJson(Gson gson, String json, TypeToken<T> typeToken) {
return gson.fromJson(json, typeToken.getType());
}

然后这样调用它:

fromJson(gson, json, new TypeToken<ArrayList<Sample1>>(){})

关于java - 使用集合处理 Gson 中的类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61908267/

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