📜  Jackson注释-@JsonAutoDetect(1)

📅  最后修改于: 2023-12-03 15:15:54.133000             🧑  作者: Mango

Jackson注释-@JsonAutoDetect

Jackson是一款非常流行的Java库,用于在Java对象和JSON数据之间进行转换。在Jackson中,@JsonAutoDetect是一种注释,用于定义在将Java对象序列化为JSON时,应自动检测的访问修饰符。

使用方法

要使用@JsonAutoDetect注释,只需将其添加到Java类的类级别上即可。例如:

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public class MyObject {
    private String privateField;
    public String publicField;
    /* constructors, getters, setters etc. */
}

上面的代码段将MyObject类标记为使用@JsonAutoDetect注释。此注释设置fieldVisibility属性,指定要公开的字段。在这种情况下,任何字段都将公开,包括私有字段。

可以使用@JsonAccess注释更改默认的访问修饰符。

属性

@JsonAutoDetect注释有几个属性可以使用。

fieldVisibility

可见字段的可见性。默认情况下,Jackson只公开公共字段。这可以设置为实现其他方案的方式。

可选值:

  • ANY:覆盖正常的JVM可见性规则。这将公开所有字段,无论其修饰符如何。
  • NON_PRIVATE:公开所有非私有字段(该修饰符后面没有private关键字)
  • PROTECTED_AND_PUBLIC:仅公开公共和受保护的字段(它们具有public或protected修饰符)
  • PUBLIC_ONLY:仅公开公共字段。

getterVisibility

可见的getter方法的可见性。默认情况下,Jackson只公开公共getter方法。

可选值:

  • ANY:覆盖正常的JVM可见性规则。这将公开所有getter方法,无论其修饰符如何。
  • NON_PRIVATE:对于非私有getter方法(该修饰符后面没有private关键字),公开getter方法。
  • PROTECTED_AND_PUBLIC:仅公开公共和受保护的getter方法(它们具有public或protected修饰符)。
  • PUBLIC_ONLY:仅公开公共getter方法。

setterVisibility

可见的setter方法的可见性。默认情况下,Jackson只公开公共setter方法。

可选值:

  • ANY:覆盖正常的JVM可见性规则。这将公开所有setter方法,无论其修饰符如何。
  • NON_PRIVATE:对于非私有setter方法(该修饰符后面没有private关键字),公开setter方法。
  • PROTECTED_AND_PUBLIC:仅公开公共和受保护的setter方法(它们具有public或protected修饰符)。
  • PUBLIC_ONLY:仅公开公共setter方法。

isGetterVisibility

可见的is-getter方法(用于布尔属性)的可见性。默认情况下,Jackson只公开公共的is-getter方法。

可选值:

  • ANY:覆盖正常的JVM可见性规则。这将公开所有is-getter方法,无论其修饰符如何。
  • NON_PRIVATE:对于非私有is-getter方法(该修饰符后面没有private关键字),公开is-getter方法。
  • PROTECTED_AND_PUBLIC:仅公开公共和受保护的is-getter方法(它们具有public或protected修饰符)。
  • PUBLIC_ONLY:仅公开公共is-getter方法。
总结

@JsonAutoDetect注释是在将Java对象序列化为JSON时,应自动检测的访问修饰符的定义。它具有多个属性,包括fieldVisibility,getterVisibility,setterVisibility和isGetterVisibility等。必须将其添加到要编写的Java类的类级别上。