我正在尝试修改GSON示例RuntimeTypeAdapterFactory:
我有一个POJO,其中包含其他pojo的列表
class Definition(
@SerializedName("name") val name: String,
@SerializedName("fields") var fields: List<Field>
)
class Field(
@SerializedName("name") val name: String,
@SerializedName("type") val type: String,
)
class TextField(
val name: String,
val type: String,
@SerializedName("value") val value: String
): Field(name, type)
class DateField(
val name: String,
val type: String,
@SerializedName("value") val value: Date
): Field(name, type)
如果将所有类型映射到类,则GSON的RuntimeTypeAdapterFactory可以很好地工作。但是,我有一些类型只是想忽略掉而放到地板上。
即,如果我得到此字段:
{
type: "ignoreMe"
}
如果未映射任何类型,则提供的工厂将引发异常。
if (delegate == null) {
throw new JsonParseException("cannot deserialize " + baseType + " subtype named "
+ label + "; did you forget to register a subtype?");
}
我修改了if语句以针对我的情况返回null: 如果(代表==空){ 返回null; }
但是由于我为某些字段类型返回null的事实,最终我得到一个包含一些null值的列表。
有没有办法告诉TypeAdapter不要将元素添加到字段列表中?