full-stack-skills/java-skills

jackson-patterns

Jackson JSON 序列化技能。覆盖日期格式配置(非ISO-8601)、Null序列化规则(数组→[]/字符串→""/数字→null)、@JsonView分层、ObjectMapper单例规则、TypeReference泛型反序列化、@JsonProperty/@JsonFormat/@JsonIgnore注解原则、与Spring Boot集成。 当用户处理JSON序列化/反序列化、配置ObjectMapper、解决日期格式或null处理问题时使用。

Ver código fuente

Cómo usar

  1. Copia el comando y revisa el paquete antes de instalarlo en tu entorno de agente.
  2. Consulta las herramientas, credenciales y entornos necesarios en el documento original.
  3. Describe las entradas y el resultado deseado; contrasta la salida con las fuentes.
npx skills add https://github.com/full-stack-skills/java-skills --skill jackson-patterns

Antes de empezar

  • La instalación no incluye suscripción al modelo, cuota API ni permisos sobre tus archivos.
  • Las estrellas e instalaciones reflejan actividad, no una prueba independiente de calidad o seguridad.
Documento original del Skill

Contenido del repositorio de origen con títulos, ejemplos, código, tablas, enlaces e imágenes preservados.

Jackson JSON 序列化

编码 Jackson 的使用规则。LLM 默认配置 SerializationFeature.WRITEDATESAS_TIMESTAMPS=true,但中国开发者期望 yyyy-MM-dd HH:mm:ss。

Capability Boundaries

✅ Strong Suits

  1. 日期格式 — yyyy-MM-dd HH:mm:ss(非ISO-8601),与Spring Boot集成
  2. Null序列化 — 数组→[]/字符串→""/数字→null/布尔→null(规则不一致要明确)
  3. @JsonView — 同一对象不同场景返回不同字段(列表vs详情)
  4. TypeReference — 正确反序列化泛型类型(List<User>等)
  5. @JsonProperty/@JsonFormat/@JsonIgnore — 字段重命名/格式化/忽略

❌ Out of Scope

  1. Java Bean 映射 → MapStruct(编译期生成,Jackon是序列化不是映射)
  2. JSON 为API格式,内部对象映射用 MapStruct

LLM最常犯的错误

#错误正确做法
1日期序列化为时间戳 1702468800000配置 WRITE_DATES_AS_TIMESTAMPS=false,格式 yyyy-MM-dd HH:mm:ss
2null 字段不返回或返回 null明确规则:数组→[]、字符串→""、数字→null、布尔→null
3每次 new ObjectMapper()ObjectMapper 是线程安全的,应用级单例
4objectMapper.readValue(json, List.class)objectMapper.readValue(json, new TypeReference<List<User>>(){})
5标准JSON格式不与其他系统对齐带 NullNode/WRITEBIGDECIMALAS_PLAIN 等需要显式配置

核心规则速查

java
// ✅ Spring Boot 配置(ObjectMapper全局)
@Configuration
public class JacksonConfig {
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer customizer() {
        return builder -> builder
            .simpleDateFormat("yyyy-MM-dd HH:mm:ss")
            .serializationInclusion(JsonInclude.Include.NON_NULL)
            .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
            .featuresToEnable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES);
    }
}

// ✅ 注解方式
@Data
public class UserVO {
    @JsonProperty("user_name")   // JSON字段重命名
    private String username;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @JsonIgnore                  // 序列化时忽略
    private String password;

    @JsonView(Views.Detail.class) // 仅详情视图返回
    private String email;
}

// ✅ TypeReference 反序列化
List<User> users = objectMapper.readValue(json,
    new TypeReference<List<User>>(){});

// ✅ Null值处理规则
objectMapper.configOverride(String.class)
    .setInclude(JsonInclude.Value.construct(
        JsonInclude.Include.NON_NULL,  // null string → null
        JsonInclude.Include.NON_NULL
    ));

Gotchas

  1. ObjectMapper 是线程安全的 — 不要每次 new,使用单例
  2. TypeReference 必不可少 — 泛型反序列化不用 TypeReference 会得到 LinkedHashMap
  3. @JsonProperty 只影响序列化 — 不影响 Java 字段名
  4. WRITE_DATES_AS_TIMESTAMPS 默认 true — Spring Boot 默认改为 false
  5. Jackson 的 @JsonFormat 和 Spring 的 @DateTimeFormat 不同 — 前者JSON后者表单/Query参数
  6. 默认不能反序列化 LocalDateTime — 需要 jackson-datatype-jsr310 依赖
  7. @JsonIgnore 和 @JsonProperty(access=READ_ONLY) 的区别 — @JsonIgnore 双向忽略,access控制方向
  8. null 数字不会自动变 0 — 需要全局 include=NON_NULL 或单独配置

Data Privacy

本技能不收集、存储或传输任何用户数据。

del mismo repositorio

Más Skills

Todos los Skills
full-stack-skills
Comunidad

easyexcel-fill

基于 Alibaba EasyExcel(com.alibaba:easyexcel:4.0.3)的 Excel 模板填充技能。覆盖简单对象填充、列表填充({.}+forceNewRow)、横向多列组合填充(FillWrapper+WriteDirectionEnum.HORIZONTAL)、复杂填充(含合计行/统计行/先 fill 后 write)、Spring Boot 集成、模板设计规范、转义字符、03版/07版差异、性能优化(分次 fill、文件缓存)。当用户需要把 Java 对象或 Map 数据按预制 .xlsx 模板(变量语法 {var}、{.}、{prefix.})填充生成报表(工资条/合同/对账单/发票/财务报表/统计表/汇总表)时使用此技能,不适用于不基于模板的"程序生成 Excel"场景(改用 easyexcel-write)。

instalaciones
1
GitHub Stars
5
Actualizado
19 sept
full-stack-skills
Comunidad

guava-patterns

Google Guava 最佳实践模式。从官方 wiki 提炼,覆盖 Immutable集合的 of/copyOf/builder 三模式与防御性拷贝规则、Cache 选择决策(LoadingCache vs Cache vs Caffeine)、Joiner/Splitter 不可变流水线、CharMatcher 替代正则、Preconditions 格式化消息校验、CaseFormat 命名互转。 纠正 LLM 误用:手写不可变集合、ConcurrentHashMap 替代 Cache、不知 CharMatcher。

instalaciones
1
GitHub Stars
5
Actualizado
19 sept
full-stack-skills
Comunidad

java-code-comments

Provides comprehensive guidance for adding Java code comments following industry standards and best practices. This skill helps add class-level comments, method-level comments, and field-level comments to Java code. Use when the user wants to add comments to Java code, needs to document Java classes/methods/fields, wants to improve code documentation, or needs to generate JavaDoc comments. This skill covers Controller, Service, ServiceImpl, Mapper, Model, Entity, BO (Business Object), DTO, VO, a

instalaciones
1
GitHub Stars
5
Actualizado
19 sept