我使用傑克遜反序列化來自我沒有的服務器的json響應。我使用JsonTypeInfo註釋來處理多態數據類型。這裏的配置我有我的基本類型(Thing
在這種情況下):傑克遜:「意外的標記(VALUE_STRING),預計FIELD_NAME:」當反序列化空字符串,而不是預期的對象
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = Thing.class, name = "Thing"),
@JsonSubTypes.Type(value = FancyThing.class, name = "FancyThing")
})
一切都很正常,直到服務器返回那裏我期待這些類型的一個空字符串,然後我得到的其中之一:
org.codehaus.jackson.map.JsonMappingException: Unexpected token (VALUE_STRING), expected FIELD_NAME: missing property 'type' that is to contain type id (for class com.stackoverflow.Thing)
是否有推薦的方式來處理這種情況?就像我說的,我不控制服務器,所以我必須處理這個客戶端。我寧願通過配置ObjectMapper
來解決這個問題,但ObjectMapper#configure(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true)
似乎沒有按照我預期的方式工作。有任何想法嗎?
我應該怎麼做,如果使用參數的構造,也不會喜歡用空的構造? –