是否可以创建一个 JSON 模式来验证哈希图/字典而不是对象?
Is it possible to create a JSON Schema that can validate a hashmap / dictionary as opposed to an object?
因此,如果我有一个对象,我们就称它为一个人,例如:
{
"email": "foo@bar.com",
"first"" "foo",
"last": "bar"
}
这个 Person 对象都可以用 JSON 模式很好地验证。问题是当其中的多个被排列成一个字典时,电子邮件字段被用作键,对象是值。例如:
{
"foo@bar.com": {
"email": "foo@bar.com",
"first"" "foo",
"last": "bar"
},
"you@your.com": {
"email": "you@your.com",
"first": "Bob",
"last": "Bobton"
},
"me@mine.com": {
"email": "me@mine.com",
"first": "Deb",
"last": "Debbington"
}
}
这是构造数据的常用方法。除了可以通过 JSON 模式很好地处理的 Person 值的验证之外,还有许多对字典有用的验证:
- 密钥是一封电子邮件,可以作为一个验证。
- 该值始终是一个人。
- 键始终与值的电子邮件字段相同。
- 所有的键都是唯一的。
是否可以使用 JSON 模式实现这些字典验证?
前两个要求,是的。
您可以使用 patternProperties
.
你问的其他两个不可能使用 JSON 模式。对不起。
我的期望是您从 API 收到第一种形式的数据,验证,然后映射缩减到您想要的结构。
因此,如果我有一个对象,我们就称它为一个人,例如:
{
"email": "foo@bar.com",
"first"" "foo",
"last": "bar"
}
这个 Person 对象都可以用 JSON 模式很好地验证。问题是当其中的多个被排列成一个字典时,电子邮件字段被用作键,对象是值。例如:
{
"foo@bar.com": {
"email": "foo@bar.com",
"first"" "foo",
"last": "bar"
},
"you@your.com": {
"email": "you@your.com",
"first": "Bob",
"last": "Bobton"
},
"me@mine.com": {
"email": "me@mine.com",
"first": "Deb",
"last": "Debbington"
}
}
这是构造数据的常用方法。除了可以通过 JSON 模式很好地处理的 Person 值的验证之外,还有许多对字典有用的验证:
- 密钥是一封电子邮件,可以作为一个验证。
- 该值始终是一个人。
- 键始终与值的电子邮件字段相同。
- 所有的键都是唯一的。
是否可以使用 JSON 模式实现这些字典验证?
前两个要求,是的。
您可以使用 patternProperties
.
你问的其他两个不可能使用 JSON 模式。对不起。
我的期望是您从 API 收到第一种形式的数据,验证,然后映射缩减到您想要的结构。