如何确保对象中的键是带有 jsonschema 的字符串
How to ensure that keys in object are strings with jsonschema
我需要一个 jsonschema 来验证 JSON,其中所有键都必须是字符串。所有键都是任意的。
例如这应该是有效的
{
"123": "GET",
"key2": "/mellons/and/strawberries",
"arbitrary_key": {
"SomeKey": "some data",
},
}
虽然这不应该
{
123: "GET",
"key2": "/mellons/and/strawberries",
"arbitrary_key": {
"SomeKey": "some data",
},
}
使用 patternProperties
验证无效,因为此正则表达式 "^.*$"
似乎匹配数字和字符串。
a={
123: "GET",
"key2": "/mellons/and/strawberries",
"arbitrary_key": {
"SomeKey": "some data",
},
};
Object.keys(a) // this gives array of keys can assign check here
根据 JSON,对象键总是字符串(只看第一张图)。不过,某些解析器可能也允许将数字用作字符串。
由于 json 模式应该验证有效 json 文档的结构,它不会识别词汇格式错误的 json 字符串。这超出了 json 架构的范围。您也不应该混淆 JSON 和 javascript 对象。
因此,如果您真的确定要捕获这种格式不正确的 JSON,那么最好的办法可能就是选择具有严格模式的解析器。
我需要一个 jsonschema 来验证 JSON,其中所有键都必须是字符串。所有键都是任意的。
例如这应该是有效的
{
"123": "GET",
"key2": "/mellons/and/strawberries",
"arbitrary_key": {
"SomeKey": "some data",
},
}
虽然这不应该
{
123: "GET",
"key2": "/mellons/and/strawberries",
"arbitrary_key": {
"SomeKey": "some data",
},
}
使用 patternProperties
验证无效,因为此正则表达式 "^.*$"
似乎匹配数字和字符串。
a={
123: "GET",
"key2": "/mellons/and/strawberries",
"arbitrary_key": {
"SomeKey": "some data",
},
};
Object.keys(a) // this gives array of keys can assign check here
根据 JSON,对象键总是字符串(只看第一张图)。不过,某些解析器可能也允许将数字用作字符串。
由于 json 模式应该验证有效 json 文档的结构,它不会识别词汇格式错误的 json 字符串。这超出了 json 架构的范围。您也不应该混淆 JSON 和 javascript 对象。
因此,如果您真的确定要捕获这种格式不正确的 JSON,那么最好的办法可能就是选择具有严格模式的解析器。