gpt4 book ai didi

java - 如何在具体方法中取消@jsonIgnore

转载 作者:行者123 更新时间:2023-12-02 10:46:26 26 4
gpt4 key购买 nike

我有一个域javabean,一些bean包含很多带有密码的信息并登录 Ip,我使用 @jsonIgnore 来过滤我不使用的属性希望最终用户知道。

但是有一个问题,用其他方法我使用相同的 javabean 发回到前端,但现在我需要该域的一些属性无论如何可以在某些特定方法中取消这个@jsonIgnore吗?

@JsonIgnore

private String address;

private Integer drawnum;

但现在我需要地址,我不能这样做......我不想使用 for 循环添加其他对象。

最佳答案

我认为您正在寻找的是 JsonView 的概念:在某些情况下,您希望序列化一组属性,而在其他情况下,您需要一组(稍微)不同的属性要序列化的属性。

检查这个excellent tutorial ,它解释了一切,甚至包括 Spring MVC 的使用。

创建类来注释字段:

public class Views {
public static class Public {
}

public static class Internal extends Public {
}
}

注释字段:

public class Item {

@JsonView(Views.Public.class)
public int id;

@JsonView(Views.Public.class)
public int drawnum;

@JsonView(Views.Internal.class)
public String address;
}

在 Controller 中,如果您只想序列化“公共(public)”属性;

@JsonView(Views.Public.class)
@RequestMapping("/items/{id}")
public Item publicItem(@PathVariable int id) {

结果:{"id":2,"drawnum":5}

在另一个 Controller 中,如果您希望序列化所有属性;

@JsonView(Views.Internal.class)
@RequestMapping("/items/{id}")
public Item internalItem(@PathVariable int id) {

结果:{"id":2,"drawnum":5,"address":"我的地址"}

关于java - 如何在具体方法中取消@jsonIgnore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52528464/

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