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

mat*_*ndr 5 java json annotations jackson

考虑以下类别:

private static class Widget {

    @JsonProperty
    private String id = "ID";

    @JsonIgnore
    private String jsonIgnored = "JSON_IGNORED";

    private String noAnnotation = "NO_ANNOTATION";
}
Run Code Online (Sandbox Code Playgroud)

如果使用Jackson序列化此序列,则将得到以下字符串:

{"id":"ID"}
Run Code Online (Sandbox Code Playgroud)

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

Ren*_*uza 5

@JsonIgnore注释的属性/方法不会被Jackson序列化/反序列化。虽然不会被注释。

这里的问题是杰克逊通常会寻找吸气剂,而您没有指定任何吸气剂。这就是为什么它仅序列化@JsonProperty带注释的属性的原因。

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

{
  "id":"ID",
  "noAnnotation":"NO_ANNOTATION"
}
Run Code Online (Sandbox Code Playgroud)

  • 如果没有@JsonProperty,则生成的输出将基于属性名称。假设您的媒体资源名为textDescription,但您需要将其作为“ text-description”。然后,您应该使用@JsonProperty(“ text-description”) (2认同)