按"高频、实用"精简一版,只保留日常接口开发最常用的一批。
Jackson 高频注解速查表
| 注解 | 高频用途 | 典型场景 |
|---|---|---|
@JsonProperty |
指定 JSON 字段名,也可控制读写 | 驼峰/下划线互转、字段重命名、READ_ONLY/WRITE_ONLY |
@JsonIgnore |
忽略单个字段 | 不返回 password、token、salt |
@JsonInclude |
控制字段是否输出 | 去掉 null、空字符串、空集合 |
@JsonFormat |
控制字段输出格式 | 日期、时间、Long 转 String |
@JsonCreator |
指定反序列化构造方式 | 枚举、无默认构造器对象 |
@JsonValue |
序列化时只输出一个值 | 枚举返回 code、name |
如果只背高频,记住:字段名、忽略、是否输出、格式化、枚举、兼容别名、自定义转换,基本就能覆盖日常接口开发里 90% 的 JSON 处理。
下面是另一问题,这些被称作什么
在 Java 里,annotation 的标准中文术语是 注解 。 它也叫 元数据 / metadata,本质是给类、字段、方法、参数贴标签,让框架、编译器或工具读取后做额外处理。
com.fasterxml.jackson.annotation 下面那些 @JsonProperty、@JsonIgnore、@JsonFormat 等,专业叫法就是"Jackson 注解" ,日常沟通时直接说英文名最准确。 它们没有像 @Override 那样被广泛使用的固定中文译名。
如果一定要用中文描述,可以这样说:
| 注解 | 中文描述 |
|---|---|
@JsonProperty |
属性名映射注解 |
@JsonIgnore |
忽略属性注解 |
@JsonIgnoreProperties |
批量忽略属性注解 |
@JsonInclude |
属性包含策略注解 |
@JsonFormat |
格式化注解 |
@JsonAlias |
属性别名注解 |
@JsonCreator |
自定义构造/工厂方法注解 |
@JsonValue |
单值输出注解 |
@JsonUnwrapped |
展开嵌套对象注解 |
@JsonNaming |
命名策略注解 |
@JsonView |
视图过滤注解 |
@JsonFilter |
动态过滤注解 |
@JsonSerialize / @JsonDeserialize |
自定义序列化/反序列化注解 |
口语里也可以说成 "字段重命名注解""忽略字段注解""格式化注解",但正式文档、代码评审、面试里还是直接说英文名更专业。
另外注意一点:Java 里的 @Xxx 叫 注解 annotation ;Python、TypeScript 里的 @Xxx 通常叫 装饰器 decorator。 虽然长得像,但机制不一样,不能混着叫。
要不要说说 @JsonIgnore 和 @JsonIgnoreProperties 底层机制有什么不同------为什么一个作用于字段、一个作用于类?