gpt4 book ai didi

JSON 模式,允许一个对象或这些对象的数组

转载 作者:行者123 更新时间:2023-12-02 00:31:23 25 4
gpt4 key购买 nike

假设我有一个 JSON 架构,允许像这样的对象:

...
"assetMetadata": {
"type": "object",
"additionalProperties": false,
"properties": { ... }
}
...

所以说我想更改它以允许相同的对象或该特定对象的数组。这里只接受一个数组:

...
"assetMetadata": {
"type": "array",
"description": "...",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {...}
}
...

属性是相同的(是同一个对象,只是可以选择多个而不是一个)。

有趣的是,在我正在从事的项目中,解码器已经可以处理这两种情况(它将单个对象转换为大小为 1 的序列),因此纯粹是验证阻止了我继续前进。我们希望保持与现有 API 的可比性,这就是我现在不能只需要一个数组的原因。

最佳答案

您可以使用 anyOf 关键字和定义/$ref 来实现此目的,以避免重复。

{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"assetMetadata": {
"anyOf": [
{ "$ref": "#/definitions/assetMetaData" },
{
"type": "array",
"description": "...",
"items": { "$ref": "#/definitions/assetMetaData" }
}
]
}
},
"definitions": {
"assetMetadata": {
"type": "object",
"additionalProperties": false,
"properties": { ... }
}
}
}

关于JSON 模式,允许一个对象或这些对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36413015/

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