我可以将@SerializedName
设置为this_field
,这样当我使用toJson()
函数时,它会正确地使用它。但是,当我试图通过fromJson()
函数读取它时,它会尝试使用thisField
。
通常我会创建一个如下所示的序列化程序;但是,是否有内置的东西可以处理这个问题,或者这是为每个类创建自定义反序列化程序的唯一方法?
A类
@Data
@Builder
@AllArgsConstructor
public class A {
@SerializedName("this_field")
private Integer thisField;
}
ADerializer类别
public class ADeserializer implements JsonDeserializer<A> {
@Override
public Additional deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
JsonObject obj = jsonElement.getAsJsonObject();
return A.builder()
.thisField(obj.get("this_field").isJsonNull() ? null : obj.get("this_field").getAsJsonObject)
.build();
}
}
1条答案
按热度按时间ogq8wdun1#
按doc
public abstract String[]替代返回值:反序列化字段时字段的备用名称
因此您可以使用
这将导致在序列化期间使用
this_field
。在反序列化过程中,如果可用,则使用
this_field
;如果不可用,则使用thisField
(如果可用)。