2016-10-24 22 views
1

在實體的自定義Deserializer中,我想以某種方式遞歸調用(某些)字段的反序列化,從而尊重@JsonFormat註釋。更具體地是這樣的解串器的樣子:Jackson Deserializer如何遞歸反序列化將@JsonFormat註釋考慮在內的字段?

public class DealPatchDeserializer extends JsonDeserializer<DealPatch> { 
    public DealPatch deserialize(JsonParser p, DeserializationContext ctxt) 
      throws IOException, JsonProcessingException { 
     JsonNode root = p.readValueAsTree(); 
     JsonNode redeemableFromNode = root.path("redeemableFrom"); 
     JsonParser redeemableFromParser = redeemableFromNode.traverse(p.getCodec()); 
     Date date = redeemableFromParser.readValueAs(Date.class); 
} 

在那個例子中的JsonParser.readValueAs()不採取附加說明

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd.MM.yyyy") 
private Date redeemableTo; 

圖案考慮在內,從而生成由於異常未知(德文)日期格式。

是否有任何方法反序列化對象的字段,以便它尊重註釋格式?

回答

0

如果整個redeemableFrom對象不需要自定義反序列化,則可以通過調用treeToValue()將其解析爲常規Java對象和註釋。像這樣的東西應該工作:

p.getCodec().treeToValue(redeemableFromNode, RedeemableFrom.class); 
+0

沒有。 @JsonFormat未被使用,因此存在HttpMessageNotReadableException,因爲該值無法反序列化爲Date。我的觀點是:我有一個有格式註釋的字段,我怎樣才能調用這個字段進行反序列化,以便使用指定的格式? – Gregor

相關問題