gpt4 book ai didi

java - 在 Spring MVC 中排除 JSON 中的属性(在 Jackson 序列化期间)

转载 作者:行者123 更新时间:2023-11-30 07:55:20 24 4
gpt4 key购买 nike

问题:

一种在 @RestController 方法中返回对象时排除类属性(例如,未经授权不应公开的字段)的简单方法。

class Article {
String title;
String content;
List<Comments> comments;
int status;
}

我希望能够根据我所拥有的三种情况轻松返回 Article 对象(这只是一个像示例一样的虚拟 foo bar):

  1. 包含所有字段
  2. 包括标题、内容、评论
  3. 包含标题和内容

当前想法

我知道我有三个想法来解决这个问题。

想法#1

使用@JsonView。它有效,但远不是一种简单直接的方法(除非我误解了文档)

我可以用@JsonView注释所有字段,一开始看起来很简单,但在未来的开发中它会变得非常复杂。

class Article {
@JsonView({ArticleView.List.class, ArticleView.Detail.class, ArticleView.Admin.class})
String title;
@JsonView({ArticleView.Detail.class, ArticleView.Admin.class})
String content;
@JsonView({ArticleView.Detail.class, ArticleView.Admin.class})
List<Comments> comments;
@JsonView({ArticleView.Admin.class})
int status;
}

它确实要求我每次添加新属性时都用 View 修改新属性。我还需要注释每个属性(我希望尽可能成为 POJO。

想法 #2

DTO - 我想避免创建 DTO,特别是因为添加新字段可能意味着将其添加到所有类中(尽管这似乎是我当前的选择)

想法 #3

https://github.com/monitorjbl/json-view

在我看来,它还不够成熟,无法在制作中使用它。不过作者很活跃。

我相信我的问题相当普遍,并且必须有一种更简单的方法。

最佳答案

您可以看一下我为此目的创建的一个小项目。也许它符合您的需求:

https://github.com/Antibrumm/jackson-antpathfilter

关于java - 在 Spring MVC 中排除 JSON 中的属性(在 Jackson 序列化期间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32757969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com