【发布时间】:2016-11-17 08:10:17
【问题描述】:
这是一个多态字段:
@JsonProperty("配置") @JsonTypeInfo(使用 = JsonTypeInfo.Id.NAME,包括 = JsonTypeInfo.As.EXTERNAL_PROPERTY,属性 =“类型”) @JsonSubTypes({ @JsonSubTypes.Type(name = "keystone", value = KeystoneConfig.class), @JsonSubTypes.Type(name = "internal", value = InternalConfig.class) }) @Nullable 抽象配置 getConfig();其中Configuration 是一个接口,type 是结构/类中其他位置的String 字段。
这适用于这样的响应负载(东西):
{“类型”:“内部”, “配置”:{“int1”:“值1”} }但在省略 config 字段时会失败并出现反序列化解析错误,如下所示:
通常,当字段被省略时,我们会得到 Java 默认值(在这种情况下我期望 null)。我希望保留鉴别器字段type,但允许config 字段是可选的。
在这种情况下我怎样才能得到这种行为?
【问题讨论】:
-
遇到了同样的问题,当它应该为空时,通过返回一个新的对象(这里提到的类型以外的类型)来修复它。例如@JsonSubTypes.Type(name = "noConfig", value = NullConfig.class)