gpt4 book ai didi

android - 如何使用具有通用基类的 GSON 反序列化 JSON

转载 作者:行者123 更新时间:2023-11-29 20:12:39 25 4
gpt4 key购买 nike

我有一个看起来像这样的 json

{
user:{
name:abc
email:a@bc.com
.....
}
responseCode:1
responseMessage:Done
}

我正在使用带有 GSON 转换器的 Retrofit 2。 2个参数responseCoderesponseMessage 出现在每个 JSON 中。区分参数是“用户”

所以我创建了一个类

class BaseResponse {
public int responseCode;
public String responseMessage;
}

然后 POJOS 的其余部分扩展如下:

class User extends BaseResponse {
public String name;
public String email;
}

问题是,GSON 不会反序列化“用户”部分。我想我必须写一个解串器

return new JsonDeserializer<T>() {
@Override
public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {

JsonObject jsonObject = json.getAsJsonObject();
int messageCode = jsonObject.get("responseCode").getAsInt();

if (messageCode == 1) {
**// What do I do now?**
}

return null;
}
};

问题是,GSON 向我返回了用户对象元素全部为空的用户对象。

我有点陷入困境。无论如何这是可能的吗?我要么通过 JsonObject jo = json.getAsJsonObject().getAsJsonObject("user"); 或父级获取子类内容。任何帮助将不胜感激。

最佳答案

你只需要制作这 3 个类,然后你不需要编写反序列化器。

public abstract class BaseResponse {
public int responseCode;
public String responseMessage;
}

public class UserResponse extend BaseResponse {
private User user;
}

public class User {
private String name;
private String email;
}

然后你就说Call<UserResponse> listRepos(@Path("user") String user);

关于android - 如何使用具有通用基类的 GSON 反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34544914/

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