在实体的自定义反序列化器中,我想以某种方式递归调用(某些)字段的反序列化,以尊重 @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;
模式考虑在内,因此由于未知(德语)日期格式而生成异常。
是否有任何方法可以反序列化对象的字段,以便它遵循带注释的格式?
最佳答案
如果整个 redeemableFrom
对象不需要自定义反序列化,您可以通过调用 treeToValue()
将其解析为带有注释的常规 Java 对象。像这样的东西应该有效:
p.getCodec().treeToValue(redeemableFromNode, RedeemableFrom.class);
关于java - Jackson Deserializer 如何在考虑 @JsonFormat 注释的情况下递归地反序列化字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40216026/