SuperAPI AI 工具集

jackson-patterns

通用与其它

查看项目

更新于 10-15 21:48

技能介绍

用途:为 Java 项目中的 Jackson JSON 序列化提供编码规则,重点解决 LLM 默认配置与中国开发者预期不一致的问题,例如默认将日期序列化为时间戳,而实际期望 yyyy-MM-dd HH:mm:ss。

主要能力:日期格式配置(非 ISO-8601,与 Spring Boot 集成);Null 序列化规则(数组→[]、字符串→""、数字→null、布尔→null,规则不一致时需明确);@JsonView 实现同一对象在不同场景返回不同字段(列表 vs 详情);ObjectMapper 应用级单例;TypeReference 泛型反序列化;@JsonProperty、@JsonFormat、@JsonIgnore 等注解用于字段重命名、格式化与忽略。

常见错误与正确做法:日期被序列化为时间戳时,应配置 WRITE_DATES_AS_TIMESTAMPS=false 并指定格式;null 字段处理需明确规则;不要每次 new ObjectMapper(),它是线程安全的,应使用单例;泛型反序列化应使用 new TypeReference<List<User>>(){},否则得到 LinkedHashMap;标准 JSON 格式与其他系统对齐时,NullNode、WRITE_BIGDECIMAL_AS_PLAIN 等需显式配置。

使用方式:可通过 Spring Boot 的 Jackson2ObjectMapperBuilderCustomizer 做全局配置,也可用注解在字段级别控制。示例配置包括 simpleDateFormat、serializationInclusion、featuresToDisable 等。

限制与注意:@JsonProperty 只影响序列化,不影响 Java 字段名;@JsonFormat 与 Spring 的 @DateTimeFormat 不同,前者用于 JSON,后者用于表单/Query 参数;默认不能反序列化 LocalDateTime,需要 jackson-datatype-jsr310 依赖;@JsonIgnore 双向忽略,@JsonProperty(access=READ_ONLY) 可控制方向;null 数字不会自动变 0。Java Bean 映射不属于本技能范围,应使用 MapStruct。本技能不收集、存储或传输任何用户数据。