gpt4 book ai didi

JSON 模式 - 多种类型

转载 作者:行者123 更新时间:2023-12-04 22:29:21 32 4
gpt4 key购买 nike

我有这个架构。它检查评论,目前工作正常。

var schema = {
id: '',
type: 'object',
additionalProperties: false,
properties: {
text: {
type: 'string',
minLength: 1,
required: true
},
author: {
type: 'number',
required: true
}
}
};

我的评论结构是:
{
text: "Hello world!",
author: 1
}

但是现在,我需要验证这样的对象数组。所以我可以得到类似的东西:
  [
{
text: "Hello world! Im comment #1",
author: 1
},
{
text: "Super awesome comment #2!",
author: 0
}
]

有时我只得到一个评论,所以我得到一个对象,并且需要使用第一个模式,但有时我得到一组评论,我的模式不适合。

我听说过 json 模式 anyOf ,但我不知道该怎么做。

有些人喜欢:
anyOf  
schema-1 (object)
schema-2 (array with objects)

有什么帮助吗?

谢谢。

最佳答案

解决方案是在一个地方有一个通用定义,然后从 oneOf 中的两个不同选项中引用该通用定义。 :

在这里,我们将简单的对象定义放在 definitions 中。 :

{
"definitions": {
"singleObject": {
... same definition as in your question ...
}
}
}

然后我们在 oneOf 中引用这个模式:
{
"oneOf": [
{"$ref": "#/definitions/singleObject"}, // plain object
{
"type": "array", // array of plain objects
"items": {"$ref": "#/definitions/singleObject"}
}
],
"definitions": {
"singleObject": {...}
}
}

你可以用几种不同的方式来组织它——我个人经常以简单对象定义作为根模式,并在 definitions 中使用单/数组切换器。 ,所以我的文档的架构实际上是 http://example.com/schema#/definitions/arrayOrSingle .

关于JSON 模式 - 多种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32966169/

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