@JSONField(serialize = false)序列化过程中排除特定字段
@JSONField(serialize = false)
是 阿里巴巴 Fastjson 库 提供的注解,用于控制 Java 对象与 JSON 数据转换时的字段行为。以下是详细说明:
作用
- 禁用字段的序列化
当使用 Fastjson 将 Java 对象转换为 JSON 字符串时,被标记的字段不会包含在生成的 JSON 中。
典型场景:隐藏敏感信息(如密码、密钥)或不必要传输的字段。
示例
public class User {
private String name;
@JSONField(serialize = false)
private String password;
// Getters and Setters
}
- 序列化结果
User user = new User(); user.setName("Alice"); user.setPassword("123456"); String json = JSON.toJSONString(user); // 输出: {"name":"Alice"} (password 字段被忽略)
其他常用参数
-
name
指定字段在 JSON 中的名称,实现字段重命名:@JSONField(name = "user_name") private String name; // 序列化为 {"user_name":"Alice"}
-
deserialize
控制字段是否参与反序列化(JSON → 对象):@JSONField(serialize = false, deserialize = false) private String password; // 序列化和反序列化均忽略该字段
-
format
自定义日期格式:@JSONField(format = "yyyy-MM-dd") private Date birthDate;
-
ordinal
控制字段在 JSON 中的顺序:@JSONField(ordinal = 1) private String name; // 在 JSON 中排在前面
注意事项
-
仅适用于 Fastjson
该注解是 Fastjson 特有,若项目使用其他库(如 Jackson 或 Gson),需使用对应注解:- Jackson:
@JsonIgnore
- Gson:
@Expose(serialize = false)
- Jackson:
-
默认行为
未设置deserialize
时,字段默认参与反序列化。若需完全忽略字段,需显式设置deserialize = false
。
总结
- 核心用途:在 Fastjson 序列化过程中排除特定字段。
- 扩展配置:通过参数调整字段名称、顺序、格式及反序列化行为。
- 适用场景:敏感信息保护、减少数据传输冗余、字段名映射等。
原文地址:https://blog.csdn.net/qq_41451744/article/details/146505780
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/611132.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/611132.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!