Jackson 可以在 2.6.5 中为以下类反序列化 json,但在 2.8.8 中失败。
模型:
public static class Parent {
public long id;
public List<Child> children;
}
@RequiredArgsConstructor
public static class Child {
public long childId;
@NonNull
@JsonIgnore
public Parent parent;
public Child() { }
}
JSON:
{
"id": 1,
"children": [
{
"childId": 2
}
]
}
例外是:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "childId" (class Parent), not marked as ignorable (2 known properties: "children", "id"])
我发现由 lombok 创建的 Child 构造函数导致了这个错误。当我摆脱 lombok 注释或手动创建构造函数时,这种情况就不会发生了。无论哪种方式,它都应该使用无参数 Child() 构造函数。是什么导致了这个问题?