考虑一个Java类构造函数,它接受两个参数但允许第二个参数为空。
public class Category {
String name;
@JsonIgnore Category parent;
Category(String name,Category parent){this.name = name;this.parent=parent;}
}
我使用@JsonIgnore注释跳过了父级的序列化,因为我不需要它。现在杰克逊无法对其进行反序列化,因为它在最终的Jason中找不到父属性。
是否有其他解决方案,但定义一个只接受name参数的构造函数?
答案 0 :(得分:0)
可以使命名的构造函数参数丢失 - 您只需获取null而不是value。所以你可以拥有:
@JsonCreator
public Category(@JsonProperty("name") String name, @JsonProperty("whatever") Category parent) { ... }
并且发现的任何内容都会被传递。不会抛出任何例外;杰克逊从未要求财产存在。它只是抱怨它无法识别的东西(除非配置为不)。