gpt4 book ai didi

json - 如何制作 jsonschema 以验证数组中的所有对象?

转载 作者:行者123 更新时间:2023-12-05 01:27:49 24 4
gpt4 key购买 nike

我正在尝试使用 json-schema 验证 JSON 输入,但它不像我需要的那样工作。

我有以下输入 JSON(其中的一部分):

[
{
"admin_state": "disabled"
},
{
"state": "disabled"
}
]

以及以下 json-schema(也是其中的一部分):
{
"type": "array",
"items": [
{
"type": "object",
"properties": {
"admin_state": {
"type": "string",
"default": "enabled",
"enum": [
"disabled",
"enabled"
]
}
},
"additionalProperties": false
}
],
"minItems": 1
}

由于不应允许的“状态”属性,我希望验证失败(感谢 “additionalProperties”:false 选项)

但是,我可以在数组的第二项中添加/更改任何内容,验证总是成功的。当我更改第一项中的任何内容时,验证失败(如预期)。

我错过了什么?

谢谢你的帮助!

最佳答案

JSON Schema 草案 7 状态...

If "items" is a schema, validation succeeds if all elements in thearray successfully validate against that schema.

If "items" is an array of schemas, validation succeeds if each elementof the instance validates against the schema at the same position, ifany.


在您的架构中, items 是一个数组,这意味着您只是将该数组中的 subschem 应用于实例数组的第一个元素。只需从 items 中删除方括号,您的子模式将适用于实例中的所有项目。
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"admin_state": {
"type": "string",
"default": "enabled",
"enum": [
"disabled",
"enabled"
]
}
},
"additionalProperties": false
},
"minItems": 1
}

关于json - 如何制作 jsonschema 以验证数组中的所有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49319692/

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