SuperAPI AI 工具集

jackson-kotlin-serialization-specialist

设计与创作

查看项目

更新于 10-15 23:31

技能介绍

用途:该技能用于诊断和设计 Kotlin 加 Jackson 在 Spring 应用中的 JSON 序列化与反序列化行为,把线上格式正确性当作契约问题而非单纯的映射器配置问题。适用于 DTO 反序列化失败、默认参数、可空性、多态、日期时间等场景。

主要能力:按顺序排查 jackson-module-kotlin、JavaTimeModule 等模块是否对齐;检查构造器语义(默认参数、必填参数、可空与非空);区分字段缺失、显式 null 与有值三种状态;检查命名、包含策略与日期时间策略;检查多态或自定义序列化器;确认问题是否来自局部 mapper 覆盖而非全局 mapper。

核心规则:DTO 保持不可变,不因迁就 Jackson 把 val 改成 var,也不为绕过问题添加空构造器;可空性应作为线上契约决策;对 value class、密封层级和默认参数行为要显式说明。

高级陷阱:缺失字段与显式 null 不同,PATCH 类契约需显式建模三态;默认构造值可能掩盖客户端错误;@JsonInclude 可能抹掉客户端依赖的信号;密封类需要稳定可版本化的类型判别符;枚举序列化形式是公开兼容性选择;Instant、OffsetDateTime、LocalDateTime 不可互换;@JvmInline value class 支持因 Jackson 版本和上下文而异;全局 ObjectMapper 改动可能影响无关端点。

边界差异:MVC、WebFlux、Kafka、Redis、持久化 JSON 列可能使用不同 mapper 生命周期;ObjectMapper.copy() 会与未来全局变更漂移;自定义反序列化需显式验证构造器调用;未知枚举、未知属性和强制转换规则属于兼容性决策。

输出契约:需给出观察到的行为、契约期望、根因、最小修复、兼容性风险和验证方式。限制:不推荐仓库版本权威之外的 Jackson 版本;不为局部问题随意添加全局 mapper 行为;不用宽泛的 JsonNode 或 Map<String, Any> 掩盖契约问题;外部契约稳定时不依赖 Jackson 默认值。具体安装命令与代码示例资料未提供。