【问题标题】:@JsonProperty annotaion@JsonProperty 注释
【发布时间】:2021-06-24 18:52:47
【问题描述】:

为什么我们在 Java DTO 中将 @JsonProperty 放在 Setter 和 Getter 上,这与将 @JsonProperty 放在属性上有何不同?

如果我们需要将它放在两者上进行反射,那么它是否适用于@Data lombok 注释?

【问题讨论】:

    标签: java annotations dto


    【解决方案1】:

    如果您想将某些内容映射到您的对象,则将其放在 setter 上,如果您希望使用该 json 属性将其导出,您可以在 getter 上使用它,您基本上可以选择是否只希望它以这种方式可序列化或仅可反序列化。

    老实说,我从来没有那样使用它,因为我从来不需要一个没有另一个,所以我总是在田野上使用它。我的建议是只在属性上使用它,它适用于两者。

    是的,它适用于 lombok 的 @Data。

    【讨论】:

      【解决方案2】:

      Jackson JSON 库查找这些注释以了解存在哪些 JSON 字段可用于序列化(从 java 对象转换为字符串)或反序列化(从字符串转换为 java 对象)。

      支持注释字段和方法是为了方便支持开发人员可能拥有的不同配置。话虽如此,最佳实践是使用具有“属性”(即字段)的模型对象以及使用标准命名的 getter 和 setter。遵循这种做法时,开发人员可以选择对字段或方法进行注释。

      您可能需要注释方法而不是字段的示例 - 如果您有一个从基类继承受保护字段并且无法将注释添加到基类的对象。在这种情况下,您可以将字段的 getter 添加到派生类并对其进行注释。但请仅在您无法遵循最佳实践时才这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-06
        • 2012-12-14
        • 2023-03-15
        • 2018-06-07
        • 2021-12-05
        • 1970-01-01
        • 1970-01-01
        • 2018-01-23
        相关资源
        最近更新 更多