【发布时间】:2018-10-01 12:27:24
【问题描述】:
在 Android (Java) 环境中,我使用 Gson 来处理序列化/反序列化。在我发出的一个 GET 请求中,API 返回一个布尔值或字段“keyName”的对象。当值为布尔值时如何忽略此字段?
我尝试使用用户定义的排除策略,但我认为它不能用于忽略特定类型。
public class MovieAccountState {
@SerializedName("rated")
private Rating mRated;
@SerializedName("watchlist")
private boolean mWatchlisted;
public Rating getRated() {
return mRated;
}
public boolean isWatchlisted() {
return mWatchlisted;
}
}
*编辑:没有太多相关代码要发布,Gson 为我处理从 Json 创建的对象,因此来自 api 的“评级”字段要么有一个布尔值,要么有一个对象。如果有办法让我在 Gson 创建对象之前拦截 Json 数据。
【问题讨论】:
-
你能发布你的代码吗?
-
对同一个字段使用不同的类型通常是不好的。 Best 是基于意见的,但这里大多数人的意见是,修复它的 最佳 方法是为此使用不同的字段。
-
@VladyslavMatviienko 我无法控制 API,它是第三方服务。我必须在客户端上找到解决方案。
-
您也可以为您的模型类创建自定义反序列化器,因此您将手动反序列化此字段。