【问题标题】:How to hide a JsonProperty in the DTO?如何在 DTO 中隐藏 JsonProperty?
【发布时间】:2020-11-02 18:58:49
【问题描述】:

我使用 DTO 来插入对象和返回数据的搜索。

特别是,我很想了解是否有办法隐藏某些字段:

    private List <aDTO> sos;

    private List <aDTO> sosPast;

    private List <aDTO> sosPresentFuture;

sos 以书面形式用于插入对象列表。 在研究中,我需要两个独立的元素,一个返回过去的对象,一个返回现在和/或未来的对象。

所以在插入时,我只需要显示

    private List <aDTO> sos;

在研究中,我只需要展示

    private List <aDTO> sosPast;
    private List <aDTO> sosPresentFuture;

(在研究中问题已解决

    @Mapping(target = "sos", ignore = true)

在映射器中)

现在我需要一些东西来隐藏两个列表(sosPast 和 sosPresentFuture),以便只留下 sos 列表。

【问题讨论】:

    标签: java json spring-mvc properties mapstruct


    【解决方案1】:
    1. 如果您想对 Swagger 隐藏某些内容,可以使用 @ApiModelProperty(hidden = true)
    2. 如果您想完全删除由 jackson 序列化的字段,您可以在响应 DTO 上执行 @JsonIgnore

    这有帮助吗?

    【讨论】:

    • @ApiModelProperty(hidden = true) 也会从研究中删除它们(两个列表 sosPast 和 sosPresentFuture):( 我只需要从插入中删除它们。
    • 你应该拆分你的 DTO。一个用于传入请求,一个用于传出响应。关注点分离也很好:)
    【解决方案2】:

    我已经解决了这个问题:

    @JsonProperty("sosPast")
    @ReadOnlyProperty
    @ApiModelProperty(hidden = true)
    private List<aDTO> sosPast;
    
    @JsonProperty("sosPresentFuture")
    @ReadOnlyProperty
    @ApiModelProperty(hidden = true)
    private List <aDTO> sosPresentFuture;
    

    【讨论】:

      猜你喜欢
      • 2022-11-25
      • 1970-01-01
      • 2023-02-11
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      相关资源
      最近更新 更多