如何确保对象中的键是jsonschema

时间:2017-03-30 11:45:54

标签: 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进行验证不起作用,因为此正则表达式"^.*$"似乎与数字和字符串匹配。

2 个答案:

答案 0 :(得分:1)

根据JSON,对象键总是字符串(只需看一下第一张图)。有些解析器可能允许使用数字作为字符串。

由于json模式应该验证有效json文档的结构,因此它不会识别词法错误的json字符串。这超出了json架构的范围。你也不应该混淆JSON和javascript对象。

因此,如果您确实想要捕获这些非格式良好的JSON,那么您可以做的最好就是选择一个具有严格模式的解析器。

答案 1 :(得分:-1)

a={

    123: "GET",
    "key2": "/mellons/and/strawberries",
    "arbitrary_key": {
        "SomeKey": "some data",
    },
};
Object.keys(a) // this gives array of keys can assign check here