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

如何使用ZIO生成符合标准的JSON Schema?

ZIO Schema生成符合JSON Schema标准的输出

是的,ZIO Schema库支持生成符合JSON Schema draft 4及以上版本的标准JSON格式输出,具体可以通过JsonSchemaGenerator工具类实现。

实现步骤

  1. 添加依赖:确保项目中引入了zio-schema-json-schema模块(以SBT为例):
libraryDependencies += "dev.zio" %% "zio-schema-json-schema" % "<你的ZIO Schema版本>"
  1. 生成JSON Schema:利用已推导的Schema实例,通过JsonSchemaGenerator生成对应标准的JSON Schema,再序列化为JSON字符串:
import zio.schema._
import zio.schema.json.{JsonSchemaGenerator, JsonSchemaSettings, JsonSchemaVersion}
import zio.json.JsonEncoder

// 示例数据类
case class Record(id: Int, name: String, active: Boolean)

object JsonSchemaDemo {
  // 推导Record的Schema
  val recordSchema: Schema[Record] = DeriveSchema.gen[Record]

  // 生成默认draft 7版本的JSON Schema
  val defaultJsonSchema = JsonSchemaGenerator.generate(recordSchema)
  val defaultJsonStr = JsonEncoder.encodeJson(defaultJsonSchema, None)

  // 生成指定draft 4版本的JSON Schema
  val draft4Settings = JsonSchemaSettings(JsonSchemaVersion.Draft4)
  val draft4JsonSchema = JsonSchemaGenerator.generate(recordSchema, draft4Settings)
  val draft4JsonStr = JsonEncoder.encodeJson(draft4JsonSchema, None)

  def main(args: Array[String]): Unit = {
    println("Draft 7 JSON Schema:")
    println(defaultJsonStr)
    println("\nDraft 4 JSON Schema:")
    println(draft4JsonStr)
  }
}

说明

  • JsonSchemaGenerator默认生成draft 7版本的JSON Schema,这完全满足draft 4及以上的要求。
  • 如果需要指定其他版本(如draft 4、draft 2020-12),可以通过JsonSchemaSettings配置对应的JsonSchemaVersion。
  • 生成的JSON字符串可直接用于JSON数据校验、OpenAPI文档生成等场景,完全符合官方JSON Schema标准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:54:59