0

考虑采用两个参数但允许第二个为空的 Java 类构造函数。

public class Category {
    String name;
    @JsonIgnore Category parent;
    Category(String name,Category parent){this.name = name;this.parent=parent;}
}

我用@JsonIgnore 注释跳过了父序列化,因为我不需要它。现在 Jackson 无法反序列化它,因为它在生成的 Jason 中找不到父属性。

除了定义仅采用 name 参数的构造函数之外,还有其他解决方案吗?

4

1 回答 1

1

缺少命名的构造函数参数是可以的——你只会得到 null 而不是 value。所以你可以有:

@JsonCreator
public Category(@JsonProperty("name") String name, @JsonProperty("whatever") Category parent) { ... }

找到的都通过了。不会抛出异常;杰克逊从不要求财产存在。它只是抱怨它无法识别的东西(除非配置为不识别)。

于 2012-06-08T16:04:13.063 回答