让我们说我遵循平坦的JSON结构:
{
"name": "name",
"validFrom": "2018-01-09",
"validTo": "2018-01-10",
}
和MyPojo
类:
public class MyPojo {
private String name;
@JsonUnwrapped
private Validity validity;
}
和Validity
类:
public class Validity {
private LocalDate validFrom;
private LocalDate validTo;
}
我创建了自定义展开序列化程序,它运行正常。
我想将上面的JSON反序列化为MyPojo
类,其中包含Validity
值对象。
如何实施Validity
的自定义反序列化工具?
@JsonProperty
不起作用,因为我想为Validity
构建使用2个Json属性
答案 0 :(得分:0)
在这种情况下,我建议使用构造函数,比自定义反序列化器简单得多,如:
@JsonCreator
public MyPojo(@JsonProperty("name") String name,
@JsonProperty("validFrom") String validFrom,
@JsonProperty("validTo") String validTo) {
this.name = name;
this.validity = new Validity(validFrom, validTo);
}
暗示LocalDate
是从上面的String
解析的,但杰克逊可能会解析它们。
如果您将Java 8与parameter names module
一起使用,则可以跳过上面的注释这需要对有效性进行额外注释,请参阅开放杰克逊问题here
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
@JsonUnwrapped
private Validity validity;