有没有办法,创建一个json模式,限制对象可以发生的数量? 或者确保一个对象是唯一的?
最后,我想要像
这样的东西 {
"days": {
"monday": {
"schedule": {
"start_time": "23:35"
}
},
"tuesday": {
"schedule": {
"start_time": "23:23"
}
}
}
}
在这个json中,每一天应该只出现一次。就像每天一个开始时间。
到目前为止,我尝试使用以下架构,但根本没有成功。 使用这种模式,我可以有多个"星期一"我的json中的对象和模式仍然有效。但我正在寻找的是一种对多个对象无效的模式。
{
"$schema": "http://json-schema.org/schema#",
"title": "DayScheduler",
"type": "object",
"required": [
"days"
],
"properties": {
"days": {
"monday": {
"$ref": "#/definitions/scheduler"
},
"tuesday": {
"$ref": "#/definitions/scheduler"
},
"wednesday": {
"$ref": "#/definitions/scheduler"
},
"thursday": {
"$ref": "#/definitions/scheduler"
},
"friday": {
"$ref": "#/definitions/scheduler"
},
"saturday": {
"$ref": "#/definitions/scheduler"
},
"sunday": {
"$ref": "#/definitions/scheduler"
}
}
},
"definitions": {
"scheduler": {
"type": "object",
"required": [
"schedule"
],
"properties": {
"schedule": {
"type": "object",
"required": [
"start_time"
],
"properties": {
"start_time": {
"type": "string",
"pattern": "^([01]?[0-9]|2[0-3]):[0-5][0-9]"
}
}
}
}
}
}
}
有没有办法用json架构实现这个目标?
答案 0 :(得分:2)
JSON中不允许重复键。 JSON Schema旨在验证JSON数据。它没有配备来验证无效JSON的数据。
此示例有助于说明无效的原因。
var value = {
"foo": 1,
"foo": 2
}
如果您将此评估为JavaScript对象并尝试访问此对象的foo
属性:value.foo === ???
,是1
还是2
?它含糊不清。
答案 1 :(得分:0)
我在JSON方面的经验让我明白,如果你有多个具有相同密钥的对象,那么最后一个对象的值将被用于密钥。 您可以尝试添加
{
"name": name,
type: object,
properties: {
a:b,
c:d
},
"additionalProperties": false
}
到您的架构,但我仍然认为每个键的最后一次出现都将被视为值。