gpt4 book ai didi

jsonschema - 如何使用 JSON Schema 有条件地指定默认值

转载 作者:行者123 更新时间:2023-12-04 13:20:56 25 4
gpt4 key购买 nike

我有一个字段 状态 .

如果用户将作业设置为草稿状态,我不想要求描述字段 - 但我确实希望有一个默认的空字符串。

如果用户发布的作业比我想要的描述需要。

我无法弄清楚的是如何在“oneOf-draft”数组中为 设置默认值描述。

这是我的架构

{
"schema": "http://json-schema.org/draft-04/schema#",
"$id": "http://company.com/schemas/job-update.json#",
"title": "Job",
"description": "Update job",
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 2
},
"description": {
"type": "string"
// Can't set default here - as it will apply for the publish status.
},
"status": {
"enum": ["draft", "published", "onhold"],
"default": "draft"
}
},
"oneOf": [
{
"description": "Draft jobs do not require any validation",
"properties": {
"status": { "enum": ["draft"]}
},
"required": []
// SOME WHERE HERE SET DESCRIPTION.default: ""
},
{
"description": "Published jobs require validation on required fields",
"properties": {
"status": { "enum": ["published"]}
},
"required": [
"description"
],
}
],
"additionalProperties": false
}

最佳答案

不幸的是,使用纯 JSON Schema 是不可能的。
JSON Schema 验证不会修改实例数据。default JSON Schema 中的关键字是注解关键字。
注释关键字用于表示信息,但它们没有验证要求。
Draft-7(当前)是这样说的:

There are no restrictions placed on the value of this keyword. Whenmultiple occurrences of this keyword are applicable to a singlesub-instance, implementations SHOULD remove duplicates.

This keyword can be used to supply a default JSON value associatedwith a particular schema. It is RECOMMENDED that a default value bevalid against the associated schema.


https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-validation-01#section-10.2
没有与注释关键字相关的定义行为。
请记住,JSON Schema 的主要用例是定义、验证和注释。
然而...
如果您不关心模式的可移植性, ajv实现允许您使用 default value 在验证期间设置键,但此行为不是由 JSON Schema 定义的。

关于jsonschema - 如何使用 JSON Schema 有条件地指定默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52992965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com