You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中@JsonIgnore忽略字段后如何给指定接口单独暴露jwt?

解决方案

方案1:使用Jackson @JsonView 注解(推荐,规范易维护)

步骤1:定义视图标识类

// 视图类可单独存放,也可作为静态内部类放在实体类中
public class JwtView {
    // 普通视图:默认返回除jwt外的所有字段
    public interface Normal {}
    // 扩展视图:继承普通视图,额外返回jwt字段
    public interface WithJwt extends Normal {}
}

步骤2:修改实体类注解

删除jwt字段上的@JsonIgnore,给所有字段关联对应的视图:

public class MyJwt {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonView(JwtView.Normal.class)
    private Long id;
    @Lob
    @JsonView(JwtView.WithJwt.class)
    private String jwt;
    @JsonView(JwtView.Normal.class)
    private String reminderKey;
    @JsonView(JwtView.Normal.class)
    private String userAccountId;
    @JsonView(JwtView.Normal.class)
    private String clientKey;
    @JsonView(JwtView.Normal.class)
    private Timestamp createdDate;
    @JsonView(JwtView.Normal.class)
    private Timestamp expirationDate;
    @JsonView(JwtView.Normal.class)
    private byte statusCode;
}

步骤3:给接口关联对应视图

  • 普通接口(不需要返回jwt)加@JsonView(JwtView.Normal.class)注解
@GetMapping("/common/list")
@JsonView(JwtView.Normal.class)
public List<MyJwt> getCommonList() {
    // 业务逻辑
}
  • 需要返回jwt的指定接口加@JsonView(JwtView.WithJwt.class)注解
@GetMapping("/special/jwt")
@JsonView(JwtView.WithJwt.class)
public MyJwt getJwtInfo() {
    // 业务逻辑
}

方案2:动态过滤字段(无需修改实体类,适合临时场景)

如果不想改动原有实体类的注解,可在需要返回jwt的接口中通过MappingJacksonValue动态调整序列化规则:

@GetMapping("/special/jwt")
public MappingJacksonValue getJwtInfo() {
    // 查询到实体数据
    MyJwt data = myJwtService.getById(1L);
    MappingJacksonValue result = new MappingJacksonValue(data);
    
    ObjectMapper mapper = new ObjectMapper();
    // 单独配置MyJwt类的jwt字段可见,不影响其他注解的生效
    mapper.configOverride(MyJwt.class)
          .setAttributeVisibility(JsonAutoDetect.Value.defaultVisibility()
          .withFieldVisibility(JsonAutoDetect.Visibility.ANY));
    
    result.setObjectMapper(mapper);
    return result;
}

注意该方案仅在当前接口生效,不会影响其他接口的序列化逻辑。

内容的提问来源于stack exchange,提问作者Mesut Can

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:36:02