Project Icon

jackson-module-jsonSchema

Jackson模块自动生成JSON Schema

jackson-module-jsonSchema是一个用于生成JSON Schema的Jackson模块,支持JSON Schema v3版本。该模块能够为Java对象自动生成schema定义,提供自定义属性处理、必填字段标记和超媒体支持等功能。开发者可使用它生成符合规范的JSON Schema,用于数据验证和文档生成。虽然不再计划支持Jackson 3.0以上版本,但此模块仍是处理JSON Schema的有效工具。

Jackson JSON 架构模块

该模块支持创建 JSON 架构 (v3)

请注意,由于 JSON 架构草案版本 3 和 4 是不兼容的,这个模块无法支持 v4。不过有另一个模块 mbknor-jackson-jsonSchema 支持 v4。

将来这个存储库可能会有两个不同的模块;一个用于 v3,另一个用于 v4。如果未来的修订同样不兼容,也可能会有更多版本。

状态

构建状态 Maven 中央 Javadoc

2.4 版本被认为是该模块的第一个稳定版本。

两个模块(与 Jackson 2.15 配合使用)

从即将到来的 Jackson 2.15 开始,这个存储库包含两个版本的模块:

  1. 旧的 JSON 架构模块com.fasterxml.jackson.module:jackson-module-jsonSchema(从 2.0 开始)
  2. 新的 JSON 架构模块com.fasterxml.jackson.module:jackson-module-jsonSchema-jakarta(2.15+)

这取决于系统是需要使用"旧"的javax/JAXB API(第一个模块)还是更新的"Jakarta"API。

未来计划(缺乏支持)

由于社区缺乏支持,这个模块计划不会超过 Jackson 2.x - 没有为它与未来的 Jackson 3.0 兼容而做任何工作。 建议用户使用更新的 JSON 架构支持工具。

示例用法

(来自 TestGenerateJsonSchema)

只需添加依赖项 "com.fasterxml.jackson.module:jackson-module-jsonSchema:2.15.0""com.fasterxml.jackson.module:jackson-module-jsonSchema-jakarta:2.15.0"用于 jakarta 命名空间

对于 Gradle,您只需添加 mavenLocal() 到存储库中。 Maven 应该能够从本地存储库中透明地解析依赖关系。

ObjectMapper mapper = new ObjectMapper();
// 如有必要,配置 mapper,然后创建 schema 生成器
JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper);
JsonSchema schema = schemaGen.generateSchema(SimpleBean.class);

这将产生一个表示 JSON 架构的 Java POJO,可以使用 Jackson 轻松序列化,或用 Java 进行配置。定制生成应该只是找到您想要覆盖的特定生成阶段,并在 schema 工厂包装器的依赖注入周期中替换或扩展该特定对象。

添加属性处理

请参见 com.fasterxml.jackson.module.jsonSchema.customProperties.TitleSchemaFactoryWrapper 以了解编写自定义 schema 属性的示例。

必填字段

JSON 架构能够标记字段为必填。该模块通过 @JsonProperty(required = true) 字段注解支持此功能。

JsonSchema 超媒体支持

一般支持

当前实现对 IETF 发布的草案 v4 (http://json-schema.org/latest/json-schema-hypermedia.html) 是部分支持的。

当前 IETF 支持的两个方面:

  • pathStart - 定义实例的 URI 必须以此开头才能验证。
  • links - 与实例关联的链接描述对象。

您可以使用 com.fasterxml.jackson.module.jsonSchema.customProperties.HyperSchemaFactoryWrapper 启用超媒体支持。 示例:

HyperSchemaFactoryWrapper personVisitor = new HyperSchemaFactoryWrapper();
ObjectMapper mapper = new ObjectMapper();
mapper.acceptJsonFormatVisitor(Person.class, personVisitor);
JsonSchema personSchema = personVisitor.finalSchema();

默认情况下,链接描述对象的所有默认值都被忽略在输出中(method = GET, enctype = application/json, mediaType = application/json),要启用默认值,请设置 setIgnoreDefaults(true)

描述 JSON 超架构

您可以使用注解 @JsonHyperSchema 和 @Link 来描述超链接

 public class Pet {
     public String genus;
 }

 @JsonHyperSchema(
     pathStart = "http://localhost:8080/persons/",
     links = {
         @Link(href = "{name}", rel = "self"),
         @Link(href = "{name}/pet", rel = "pet", targetSchema = Pet.class)
 })
 public class Person {
     public String name;
     public String hat;
 }

将生成以下值:

{
  "type" : "object",
  "pathStart" : "http://localhost:8080/persons/",
  "links" : [ {
    "href" : "http://localhost:8080/persons/{name}",
    "rel" : "self"
  }, {
    "href" : "http://localhost:8080/persons/{name}/pet",
    "rel" : "pet",
    "targetSchema" : {
      "type" : "object",
      "properties" : {
        "genus" : {
          "type" : "string"
        }
      }
    }
  } ],
  "properties" : {
    "name" : {
      "type" : "string"
    },
    "hat" : {
      "type" : "string"
    }
  }
}

更多信息

查看 项目 Wiki 获取更多信息(javadocs、下载等)。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号