如何使用ZIO生成符合标准的JSON Schema?
ZIO Schema生成符合JSON Schema标准的输出
是的,ZIO Schema库支持生成符合JSON Schema draft 4及以上版本的标准JSON格式输出,具体可以通过JsonSchemaGenerator工具类实现。
实现步骤
- 添加依赖:确保项目中引入了
zio-schema-json-schema模块(以SBT为例):
libraryDependencies += "dev.zio" %% "zio-schema-json-schema" % "<你的ZIO Schema版本>"
- 生成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
相关产品推荐
相关产品推荐

