@JsonInclude注解使用

前言

@JsonInclude 是 Jackson 里的注解,用来控制 Java 对象序列化成 JSON 时,哪些字段需要输出,哪些字段可以省略。它不会影响反序列化,只影响 Java → JSON 的序列化过程。

@JsonInclude注解使用

常用 Include 策略

策略 含义 适用场景
ALWAYS 始终输出字段 默认行为,需要保留 null 字段时使用
NON_NULL 字段为 null 时不输出 最常见,减少 JSON 中多余 null
NON_ABSENT null 或 Optional.empty() 等"缺席值"不输出 字段类型是 Optional、AtomicReference 时更合适
NON_EMPTY null、空字符串、空集合、空数组等不输出 需要同时过滤 null 和空值
NON_DEFAULT 与默认值相同的不输出 想过滤 0、false、空串、默认构造值时慎用
CUSTOM 使用自定义过滤器决定 需要复杂过滤逻辑
USE_DEFAULTS 使用上层默认策略 字段上想继承类级别或全局配置
arduino 复制代码
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class TriggerConfigFileUploadInputDto {
    /**
     * 设备标识(必填)
     */
    private String deviceName;

    /**
     * 文件名称(必填)
     */
    private String fileName;

    /**
     * utMqtt1.0 文件类型(非必填)
     */
    private String fileType;

    /**
     * 产品标识(必填)
     */
    private String productKey;

    /**
     * 上传模式(必填),见 {@link UploadMode}。
     * <p>
     * 实际传输时序列化为字符串:{@code MQTT_CHUNK | DOWNLOAD_URL | IOT_UPLOAD_URL | EXTERNAL_UPLOAD_URL}。
     */
    private String uploadMode;

    /**
     * 提供的文件上传地址,可为空
     */
    private String uploadUrl;

    /**
     * 等待文件上传结果的超时时间(秒)
     */
    private Integer waitTime;

    /**
     * 是否同步等待文件上传结果
     */
    private Boolean waitUploadResult;

    public static void main(String[] args) throws JsonProcessingException {
        TriggerConfigFileUploadInputDto triggerConfigFileUploadInputDto =
                new TriggerConfigFileUploadInputDto();
        triggerConfigFileUploadInputDto.setDeviceName("deviceName");
        ObjectMapper objectMapper = new ObjectMapper();
        System.out.println(objectMapper.writeValueAsString(triggerConfigFileUploadInputDto));
    }
}

这个在序列化的时候,null字段会忽略

总结

可以使用该注解控制实体类上的成员变量字段

相关推荐
迪飞特科技1 小时前
智慧物业平台实战:Spring Boot 整合小程序实现报修巡检费用全流程
spring boot·后端·小程序
IT_陈寒2 小时前
Vite的这个问题坑了我三天,原来如此解决!
前端·人工智能·后端
网易云信2 小时前
大模型能上岗做销售吗?我们让 12 款国产模型交了 420 份作业
前端·后端
CCblandy2 小时前
HTTP 长连接 3 类故障实测:[WinError 10053]、99 个 TIME_WAIT、69 次多余握手,4 种对策怎么选
后端·python·网络协议·http·云原生·性能优化·架构
蜗牛互联网2 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python
dd聊技术2 小时前
Prompt 从代码常量搬进数据库:改一句话,不用再发一次版
java·后端
ly76893 小时前
Spring Data MongoDB 批量写入实践:BulkOperations 批大小与写关注权衡
java·mongodb·spring·批量写入·bulkoperations·写关注·mongotemplate
9命怪猫3 小时前
关于eBPF的JIT运维需要了解的
后端
9命怪猫3 小时前
运维eBPF 常用命令清单
后端