我有一个看起来像这样的json
{
user:{
name:abc
email:a@bc.com
.....
}
responseCode:1
responseMessage:Done
}
我正在使用GSON转换器的Retrofit 2。 2个参数 每个JSON中都会出现 responseCode 和 responseMessage 。区分参数是“用户”
所以我创建了一个类
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返回User对象,用户对象元素全为null。
我有点像修复。无论如何这有可能吗?要么通过JsonObject jo = json.getAsJsonObject().getAsJsonObject("user");
或父母来获得子类的东西。
任何帮助将不胜感激。
答案 0 :(得分:2)
您只需要创建这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);