0
這裏是一個多態字段:使用@JsonTypeInfo爲什麼不能省略多態字段?
@JsonProperty("config") @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type") @JsonSubTypes({ @JsonSubTypes.Type(name = "keystone", value = KeystoneConfig.class), @JsonSubTypes.Type(name = "internal", value = InternalConfig.class) }) @Nullable abstract Configuration getConfig();
其中Configuration
是一個接口,和type
是String
字段在結構/類其它地方。
這正常工作與響應的有效載荷(東西)是這樣的:
{ "type": "internal", "config": { "int1": "value1" } }
但未能與反序列化解析錯誤省略config
場的時候,就像這樣:
{ "type": "internal" }
通常情況下,當省略字段時,我們得到Java默認值(在這種情況下,我預期爲null
)。我希望保留鑑別器字段type
,但允許config
字段爲可選字段。
在這種情況下,我該如何得到這種行爲?
有同樣的問題,通過返回一個新的對象(類比提到的其他固定它在這裏)當它應該是空的。例如,@ JsonSubTypes.Type(name =「noConfig」,value = NullConfig.class) –