You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot项目中动态生成带校验规则JSON Schema的库推荐请求

适合Spring Boot动态对象的JSON Schema生成库推荐

以下几个库可以满足你无需预先知晓属性,直接基于动态对象生成带校验规则的JSON Schema的需求:

1. Jackson JsonSchema Module

作为Jackson生态的一部分,它能直接基于对象实例或Class生成Schema,完美适配动态对象场景。

  • 依赖引入(Maven):
    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-jsonSchema</artifactId>
        <version>2.15.2</version> <!-- 匹配你的Jackson版本 -->
    </dependency>
    
  • 基础用法:
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
    import com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator;
    
    // 假设dynamicObj是你的动态对象(比如Map<String, Object>或动态生成的Bean)
    Object dynamicObj = ...;
    
    ObjectMapper mapper = new ObjectMapper();
    JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper);
    JsonSchema schema = schemaGen.generateSchema(dynamicObj.getClass());
    
    // 输出格式化后的Schema JSON
    String schemaJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);
    
  • 校验规则支持:自动根据属性类型生成基础校验(如字符串、数字、布尔等类型约束),还能识别对象的必填属性、默认值等。如需自定义规则,可通过扩展JsonSchemaGenerator或添加Jackson注解实现。

2. VicTools JSON Schema Generator

这是一个专注于JSON Schema生成的工具库,配置灵活,支持自定义校验规则批量应用到动态属性上。

  • 依赖引入(Maven):
    <dependency>
        <groupId>com.github.victools</groupId>
        <artifactId>jsonschema-generator</artifactId>
        <version>4.21.0</version>
    </dependency>
    
  • 基础用法:
    import com.github.victools.jsonschema.generator.SchemaGenerator;
    import com.github.victools.jsonschema.generator.SchemaGeneratorConfig;
    import com.github.victools.jsonschema.generator.SchemaGeneratorConfigBuilder;
    import com.github.victools.jsonschema.generator.SchemaVersion;
    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    // 配置Schema版本(如DRAFT_2020_12)
    SchemaGeneratorConfigBuilder configBuilder = new SchemaGeneratorConfigBuilder(SchemaVersion.DRAFT_2020_12);
    SchemaGeneratorConfig config = configBuilder.build();
    SchemaGenerator generator = new SchemaGenerator(config);
    
    // 生成Schema,支持动态对象的Class
    JsonNode schemaNode = generator.generateSchema(dynamicObj.getClass());
    
    // 转成JSON字符串
    String schemaJson = new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(schemaNode);
    
  • 自定义校验规则:比如给所有字符串属性添加长度限制,只需在配置Builder中添加规则:
    configBuilder.forFields()
        .withStringMinLength(1)
        .withStringMaxLength(100);
    

3. Apache Commons JSON Schema Generator

轻量级库,适合快速生成基础Schema,支持Map等动态结构。

  • 依赖引入(Maven):
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-json-schema-generator</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  • 基础用法:
    import org.apache.commons.json.JsonSchema;
    import org.apache.commons.json.JsonSchemaGenerator;
    
    JsonSchemaGenerator generator = new JsonSchemaGenerator();
    JsonSchema schema = generator.generateSchema(dynamicObj);
    String schemaJson = schema.toString();
    
  • 特点:自动识别属性类型生成基础校验规则,无需复杂配置,适合简单场景。

注意事项

  • 如果动态对象是Map<String, Object>类型,上述库均能直接根据Map中值的类型生成对应校验规则。
  • 若为CGLIB等动态生成的Bean类,只要能通过反射获取属性信息,这些库都能正常生成Schema。

内容的提问来源于stack exchange,提问作者wikipep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:02:47