@JsonIgnore的使用及相关问题的解决

目录

[1 前言](#1 前言)

[2 对比及其使用方法](#2 对比及其使用方法)

[3 遇到的相关问题及解决方法](#3 遇到的相关问题及解决方法)


1 前言

在我们编写的后端项目中,有时候可能需要将某个实体类以JSON格式传送给前端,但是其中可能有部分内容我们并不想传送,这时候我们选择将这部分内容变成Null,这确实是个解决办法。但是我们如果使用@JsonIgnore,这就可以更优雅的解决这个问题。

2 对比及其使用方法

我们以传送用户实体类User为例,其组成如下。现在,我们想将除密码外的内容返回给前端。

java 复制代码
public class User {
    private Integer id;//主键ID
    private String username;//用户名
    private String password;//密码
    private String nickname;//昵称
    private String email;//邮箱
    //其它
}

如果不使用@JsonIgnore,解决方法有很多种。既可以从mapper层入手,不查询出password,也可以在返回前对User进行处理,将password置为空。除此之外,还有很多方法,这里就将User置空,如下:

java 复制代码
public class UserController {
    public Result<User> userInfo() {
        User user = userService.findByUserName(username);
        user.setPassword("");
        //其它代码...
    }
    //其它代码...
}

用Postman测试如下:

如果使用 @JsonIgnore,那么只需要在实体类中的password上加上@JsonIgnore即可,如下:

java 复制代码
public class User {
    @JsonIgnore//转为JSON格式的数据时忽略密码
    private String password;//密码
    //其它...
}

用Postman测试就会发现,后端在转为JSON格式的数据时忽略密码,如下:

好像都是一行代码,但是各有侧重吧,一个是忽略,一个是置空。不过为了主打优雅和专业,个人推荐使用@JsonIgnore。

3 遇到的相关问题及解决方法

虽然@JsonIgnore只有一行,但是在使用过程中,我也遇到了一些问题,现将其写在这里,希望能提供一些帮助。

在我使用的时候,用的是第二个(我当时用的时候,它提示在第一个,结果就用了它),然后就和没用一样。注意:是com.fasterxml.jackson.annotation中的,这样才能产生效果。

相关推荐
金銀銅鐵40 分钟前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
福建佰胜张工1 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
念何架构之路1 小时前
go-grpc设计思想
开发语言·后端·golang
catoop1 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
system_error_x2 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
驭渊的小故事2 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring
Elastic 中国社区官方博客3 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
tyn1883 小时前
记录本地安装nacos服务的方法及异常
java·开发语言
步行cgn3 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc
y1su4 小时前
Leetcode 字符串模板
java·数据结构·算法·leetcode·职场和发展·动态规划