@JSONField(serialize = false)序列化过程中排除特定字段

ops/2025/4/1 4:11:39/

@JSONField(serialize = false)阿里巴巴 Fastjson 库 提供的注解,用于控制 Java 对象与 JSON 数据转换时的字段行为。以下是详细说明:


作用

  • 禁用字段的序列化
    当使用 Fastjson 将 Java 对象转换为 JSON 字符串时,被标记的字段不会包含在生成的 JSON 中
    典型场景:隐藏敏感信息(如密码、密钥)或不必要传输的字段。

示例

java">public class User {private String name;@JSONField(serialize = false)private String password;// Getters and Setters
}
  • 序列化结果
    java">User user = new User();
    user.setName("Alice");
    user.setPassword("123456");String json = JSON.toJSONString(user);
    // 输出: {"name":"Alice"} (password 字段被忽略)
    

其他常用参数

  1. name
    指定字段在 JSON 中的名称,实现字段重命名:

    java">@JSONField(name = "user_name")
    private String name;
    // 序列化为 {"user_name":"Alice"}
    
  2. deserialize
    控制字段是否参与反序列化(JSON → 对象):

    java">@JSONField(serialize = false, deserialize = false)
    private String password;
    // 序列化和反序列化均忽略该字段
    
  3. format
    自定义日期格式:

    java">@JSONField(format = "yyyy-MM-dd")
    private Date birthDate;
    
  4. ordinal
    控制字段在 JSON 中的顺序:

    java">@JSONField(ordinal = 1)
    private String name; // 在 JSON 中排在前面
    

注意事项

  • 仅适用于 Fastjson
    该注解是 Fastjson 特有,若项目使用其他库(如 Jackson 或 Gson),需使用对应注解:

    • Jackson: @JsonIgnore
    • Gson: @Expose(serialize = false)
  • 默认行为
    未设置 deserialize 时,字段默认参与反序列化。若需完全忽略字段,需显式设置 deserialize = false


总结

  • 核心用途:在 Fastjson 序列化过程中排除特定字段。
  • 扩展配置:通过参数调整字段名称、顺序、格式及反序列化行为。
  • 适用场景:敏感信息保护、减少数据传输冗余、字段名映射等。

http://www.ppmy.cn/ops/169865.html

相关文章

关于“会议视频人脸情绪识别系统”的功能设计方案示例

以下是一个关于“会议视频人脸情绪识别系统”的功能设计方案示例,涵盖了从输入方式、识别处理到前端展示和分析建议的各个方面: 一、系统架构 系统主要分为前端部分和后端部分。前端负责用户交互,包括输入源的选择(图片、视频、…

SQL Server 2022 安装问题

一、安装与配置问题 1. SQL Server 2022 安装失败怎么办? 常见原因: 硬件或操作系统不满足最低要求(如内存、磁盘空间不足)。未关闭防火墙或杀毒软件。之前版本的 SQL Server 残留文件未清理。 解决方案: 确保硬件配…

突破反爬困境——SDK架构设计,为什么选择独立服务模式(四)

声明 本文所讨论的内容及技术均纯属学术交流与技术研究目的,旨在探讨和总结互联网数据流动、前后端技术架构及安全防御中的技术演进。文中提及的各类技术手段和策略均仅供技术人员在合法与合规的前提下进行研究、学习与防御测试之用。 作者不支持亦不鼓励任何未经授…

一些题目记录

别人面经题目记录 https://zhuanlan.zhihu.com/p/32626732052 实现 NMS,七八次,很高频; 实现 MultiHeadSelfAttention,大概 三四次; 用 Numpy 或者 List 实现MLP 的前向和反向,4次; Leetcode …

Java高并发容器的内核解析:从无锁算法到分段锁的架构演进

《Java高并发容器的内核解析:从无锁算法到分段锁的架构演进》 本文将以JUC包核心容器为切入点,深入剖析ConcurrentHashMap在Java 8中的64位Hash分段技术,解密LinkedBlockingQueue双锁队列设计的吞吐量秘密,并给出各容器在亿级流量…

23种设计模式中的策略模式

在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。 策略模式:Strategy。指的是,定义…

OBS虚拟背景深度解析:无需绿幕也能打造专业教学视频(附插件对比)

想要录制教学视频却苦于背景杂乱?本文将手把手教你用OBS实现专业级虚拟背景效果,无需绿幕也能轻松营造沉浸式教学场景。文末附6个提升画面质感的免费背景资源! 一、虚拟背景的核心价值:从「教师宿舍」到「虚拟讲堂」的蜕变 我们调…

Rust从入门到精通之入门篇:7.注释与文档

注释与文档 在本章中,我们将学习 Rust 中的注释和文档编写方法。良好的注释和文档是高质量代码的重要组成部分,它们帮助其他开发者(包括未来的你)理解代码的目的和工作方式。 注释类型 Rust 支持几种不同类型的注释,每种都有其特定的用途。 行注释 行注释以双斜杠(/…