@JsonIgnore属性与没有注释的属性有什么区别?

时间:2016-06-28 13:34:23

标签: java json annotations jackson

考虑以下课程:

private static class Widget {

    @JsonProperty
    private String id = "ID";

    @JsonIgnore
    private String jsonIgnored = "JSON_IGNORED";

    private String noAnnotation = "NO_ANNOTATION";
}

如果我使用Jackson对其进行序列化,我将最终得到这个字符串:

{"id":"ID"}

具有@JsonIgnore的属性与没有注释的属性之间有什么区别?

1 个答案:

答案 0 :(得分:3)

Jackson不会对@JsonIgnore带注释的属性/方法进行序列化/反序列化。虽然未注释将是。

这里的问题是杰克逊经常寻找吸气剂,而你没有指明任何吸气剂。所以这就是为什么它只序列化@JsonProperty注释属性。

如果你为3个属性实现3个getter,你的json将如下所示:

{
  "id":"ID",
  "noAnnotation":"NO_ANNOTATION"
}