我正在尝试弄清楚如何在我的json-Schema对象数组上设置必需
属性在对象上正常工作,而不是数组。
以下是我的json模式的项目部分:
"items": {
"type": "array",
"properties": {
"item_id": {"type" : "number"},
"quantity": {"type": "number"},
"price": {"type" : "decimal"},
"title": {"type": "string"},
"description": {"type": "string"}
},
"required": ["item_id","quantity","price","title","description"],
"additionalProperties" : false
}
这是我发送的 json 数组。json验证应该会失败,因为我没有在这些项目中传递描述。
"items": [
{
"item_id": 1,
"quantity": 3,
"price": 30,
"title": "item1 new name"
},
{
"item_id": 1,
"quantity": 16,
"price": 30,
"title": "Test Two"
}
]
也许您的验证程序仅支持 JSONSchema v3?
所需
工作方式在 v3 和 v4 之间发生了变化:
必需
是一个布尔值:https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-03#section-5.7必需
是一个字符串数组(就像在您的示例中一样):https://datatracker.ietf.org/doc/html/draft-fge-json-schema-validation-00#section-5.4.3我知道这是一个古老的话题,但是因为这个问题是从jsonschema.net链接起来的,我想它可能值得插一脚…
您的原始示例的问题是,您为“数组”类型声明“属性”,而不是为数组声明“项”,然后声明填充数组的“对象”类型(带有“属性”)。下面是原始模式片段的修订版:
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"item_id": {"type" : "number"},
"quantity": {"type": "number"},
"price": {"type" : "decimal"},
"title": {"type": "string"},
"description": {"type": "string"}
},
"required": ["item_id","quantity","price","title","description"],
"additionalProperties" : false
}
}
我建议不要使用术语“items”作为数组的名称,以避免混淆,但是没有什么可以阻止你这样做......
我通过将数组元素的架构部分嵌套在名为item
的对象中来使用这个验证器。该模式现在有两个嵌套的项目
字段,但这是因为一个是JSONSchema中的关键字,另一个是因为您的JSON实际上有一个名为项目
的字段
JSONSchema:
{
"type":"object",
"properties":{
"items":{
"type":"array",
"items":{
"properties":{
"item_id":{
"type":"number"
},
"quantity":{
"type":"number"
},
"price":{
"type":"number"
},
"title":{
"type":"string"
},
"description":{
"type":"string"
}
},
"required":[
"item_id",
"quantity",
"price",
"title",
"description"
],
"additionalProperties":false
}
}
}
}
JSON:
{
"items":[
{
"item_id":1,
"quantity":3,
"price":30,
"title":"item1 new name"
},
{
"item_id":1,
"quantity":16,
"price":30,
"title":"Test Two"
}
]
}
输出中包含两个关于缺少描述字段的错误:
[ {
"level" : "error",
"schema" : {
"loadingURI" : "#",
"pointer" : "/properties/items/items"
},
"instance" : {
"pointer" : "/items/0"
},
"domain" : "validation",
"keyword" : "required",
"message" : "missing required property(ies)",
"required" : [ "description", "item_id", "price", "quantity", "title" ],
"missing" : [ "description" ]
}, {
"level" : "error",
"schema" : {
"loadingURI" : "#",
"pointer" : "/properties/items/items"
},
"instance" : {
"pointer" : "/items/1"
},
"domain" : "validation",
"keyword" : "required",
"message" : "missing required property(ies)",
"required" : [ "description", "item_id", "price", "quantity", "title" ],
"missing" : [ "description" ]
} ]
尝试将上面的内容粘贴到这里,查看生成的相同输出。
我正在努力使用 JOLT 转换复杂的 json。 输入JSON: 预期输出: 我无法理解如何在基于“字段名称”的输出中访问和分配“字段值”。请帮我做一下震动测试。 注意:输入JSON中的名称、标题和公司的顺序将是混乱和随机的,这意味着在“data”数组下,第一个对象仅与“Name”相关不是强制性的。
主要内容:什么是 JSON Schema,定义 Schema,使用 JSON Schema 进行验证JSON Schema 是一个描述和验证 JSON 数据结构的强大工具,我们可以把 JSON Schema 看作是一种规范,这个规范中规定了 JSON 数据的结构、键的命名、值的类型等等,通过规范可以校验指定的 JSON 数据,保证数据的准确。所以在接口调试过程中,经常使用 JSON Schema 来校验接口数据的准确性。 什么是 JSON Schema JSON Schema 译为“JSON模式
我正在循环访问不同的进程 ID 以访问 json 中的数据并将其复制到我的电子表格中。但是,某些进程 ID 不包含任何数据,每次我的代码到达这些空数组时,我都会收到错误。我已经尝试了if语句的不同变体来跳过这个,但仍然得到一个错误。空数组位于“expectRateSetList” 我尝试了不同的if语句来跳过这一步,但仍然得到一个错误。我已经尝试了“如果J为空,如果J什么都不是,如果J为空”等等,
JSON Schema 用于描述JSON数据的结构和类型。如同DTD与XML的关系。 本实现用于使用 PHP 调用 JSON Schema 对 JSON 数据进行验证。 生成 JSON Schema 由JSON生成一个全格式的Schema,方便编辑修改(勿随便直接使用在实践中)。 $value = new stdClass();$value->name = 'a name';$value->age
json-schema-editor An intuitive editor for JSON schema which provides a tree view to present structure of schema and a property inspector to edit the properties of schema element.Develop with Vue.js 2
问题内容: 我正在使用jQuery的parseJSON()函数将json字符串插入变量中。问题是,它正在将我的数据变成一个对象,而不是一个二维数组。例如, 问题是,“名称”不应该是 键 (假设这是正确的术语)。相反,它应该是: 我将如何转换呢?还是有一个不同于使用for循环遍历数组索引的方法(但仍然可以像在2d数组中一样,以字符串形式访问键和值)。 编辑:这是一些正在使用的json(请注意,它的使