【Java】【注解】@JsonIgnore 作用和说明

本文介绍了如何在Spring Boot项目中利用Fastjson库实现JSON序列化时忽略特定属性,通过@JsonIgnore注解实现前端请求只接收指定字段,提升数据传输效率。

前提是:项目使用了spring-boot框架
step 1:导入依赖

 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.74</version>
        </dependency>

step 2: 使用示例:

@Getter
@Setter //以上getter和setter是Lombok注解,不做解释
public class User implement Serializable {

	private Long id;
	private String username;
	@JsonIngnor
	private String password;
}

使用方法:该标签一般贴在属性或者方法上,表示返回的json数据不包含该属性。

总结:
该标签的作用:
当前端要求返回json格式的数据,后端在转化数据成json格式时,发现实体类属性上贴有@JsonIgnore ,则不转化,且该属性的值不会传递给前端。

### Java `@JsonIgnore` 注解的使用 #### 基本概念 `@JsonIgnore` 是 Jackson 库中的一个重要注解,用于指定某些字段或方法不应被序列化为 JSON 输出或将 JSON 输入反序列化到这些属性中。当应用于 getter 方法、setter 方法或是直接作用于字段时,该注解能够阻止特定的数据成员参与自动化的 JSON 转换过程。 对于那些不希望暴露给外部系统的敏感信息或者是内部使用的辅助数据结构来说非常有用[^1]。 #### 使用实例 下面通过几个例子来展示如何正确地运用此注解: ##### 场景一:忽略单个字段 假设有一个简单的 User 类,其中包含了一些基本信息以及密码字段 password。为了安全起见,在将对象转成 JSON 字符串的时候我们不想让 password 出现在最终的结果里,则可以在定义这个类的时候加上相应的注解。 ```java public class User { private String username; @JsonIgnore private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } // This will be ignored during serialization. } ``` 在这个案例中,即使调用了 `getPassword()` 方法获取到了值也不会出现在生成的 JSON 文档里面[^2]. ##### 场景二:处理混淆后的代码 考虑到项目可能进行了字节码级别的优化或者保护措施(如前所述),这可能导致原本加在私有域上的注解变得不再有效。为了避免这种情况发生,建议把像 `@JsonIgnore`, `@JSONField` 这样的标记放置到对应的 setter/getter 上面而不是直接放在属性声明处。 ```java public class SecureUser { private transient String secretToken; // Using 'transient' keyword as an alternative way to ignore. public String getSecretToken() { return secretToken; } @JsonIgnore public void setSecretToken(String secretToken) { this.secretToken = secretToken; } } ``` 这里不仅展示了如何利用 `@JsonIgnore` 来控制序列化行为,同时也提到了另一种方式——即使用 Java 的内置关键字 `transient`. 它同样能达到不让某个变量参与到默认序列化进程的效果[^3].
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值