当前位置: 首页 > article >正文

@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 字段被忽略)
    

其他常用参数

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

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

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

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

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

注意事项

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

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


总结

  • 核心用途:在 Fastjson 序列化过程中排除特定字段。
  • 扩展配置:通过参数调整字段名称、顺序、格式及反序列化行为。
  • 适用场景:敏感信息保护、减少数据传输冗余、字段名映射等。
原文地址:https://blog.csdn.net/qq_41451744/article/details/146505780
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/611132.html

相关文章:

  • 文件操作 说明
  • 生成模型速通(Diffusion,VAE,GAN)
  • 基于Spring Boot的供应商管理系统的设计与实现(LW+源码+讲解)
  • LangChain开发(七)自定义输出格式(JSON/XML/YAML)
  • AF3 Rotation类的map_tensor_fn 方法解读
  • 蓝桥杯 残缺的数字
  • Linux <(...) 进程替换
  • Photoshop 2025安装包下载及Photoshop 2025详细图文安装教程
  • 2025Java面试TOP1000问:源码级解答+避坑指南+性能优化
  • 在线文档导出为word/pdf/png
  • springBoot中雪花算术法
  • (番外篇一)学习webgl是先从现有的框架还是直接从底层开始学?
  • 特斯拉Optimus 2.0:多模态感知与强化学习引领家庭场景变革
  • 解决Vmware 运行虚拟机Ubuntu22.04卡顿、终端打字延迟问题
  • Python个人学习笔记(19):模块(正则表达式)
  • 车载以太网网络测试 -24【SOME/IP概述】
  • 深度学习框架PyTorch——从入门到精通(10)PyTorch张量简介
  • react 15-16-17-18各版本的核心区别、底层原理及演进逻辑的深度解析
  • 【学Rust写CAD】11 2D CAD可用rust库
  • 详细介绍sentinel的使用,并列举经常出的面试题以及答案