在实体的自定义反序列化器中,我希望以某种方式递归地调用(某些)字段的反序列化,从而遵循@JsonFormat注释。更具体地说,这就是Deserializer的样子:
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 :(得分:0)
如果整个redeemableFrom
对象不需要自定义反序列化,则可以通过调用treeToValue()
将其作为常规Java对象解析,并带有注释。这样的事情应该有效:
p.getCodec().treeToValue(redeemableFromNode, RedeemableFrom.class);