当前位置: 首页 > 知识库问答 >
问题:

Json模式验证:不允许模式[重复]中声明的字段以外的字段

阳修永
2023-03-14

假设我有类似的模式

fname: string
lname: string
age: string

这些都不是必需的。用户可以向我发送上述任何属性,但没有其他未声明的属性。他们可以传给我fnamelnameage或全部。但是如果他们向我传递了所有属性和附加属性,如middle\u name,则应拒绝该消息。

我如何定义这样的模式?

共有1个答案

韩鸿
2023-03-14

您可以创建一个json-schema并使用以下选项:

additionalProperties = false

这样,您只允许在属性中定义属性。就你而言:

{
    "properties": {
        "fname": {"type": "string"},
        "lname": {"type": "string"},
        "age": {"type": "string"}
    },
    "additionalProperties": false
}
 类似资料:
  • 我使用json-schema,并希望只允许在此文件中声明的属性通过验证。例如,如果用户在他们的json对象中传递一个“名称”属性,它将失败这个模式,因为“名称”在这里没有作为属性列出。 是否有一些类似于“必需”的功能只允许列出的属性通过?

  • 我有一个用例,我将把一个json-schema作为输入,验证它,然后保存在我的系统中。稍后,我将获取json数据,我需要使用上面提到的json-schema来验证这些数据。给定这个场景,我需要执行两个级别的验证: 我使用的是json-schema-validator jar,只能找到第二级验证,在文档中找不到json-schema验证。例如:假设我们有以下示例json-schema:

  • 是否可以定义一次regex并重用它?我有几个非常复杂的正则表达式,我想将它们用作模式,用于模式中各种不同对象的大量属性的值。复制粘贴这个看起来像是自找麻烦,但我似乎找不到合适的重用示例。 删去说明我想做什么的模式。 在http://www.jsonschemavalidator.net/中不进行验证,因为“pattern”不是字符串。这是一个重复使用的洞吗。我看过patternProperties

  • 我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根

  • 我正在使用Spring Boot和[jackson-module-jsonSchema](https://github.com/fasterxml/jackson-module-jsonSchema)构建一个REST API,用于生成JSON模式。我正在寻找一种最好的方法来验证到达我的APIendpoint(Spring控制器)的请求JSON有效负载,该有效负载是根据为公开资源定义的已定义JSON

  • 问题: 有没有一种普通的或本机的javascript方法来根据JSON模式验证JSON脚本? 我在Github上找到了很多库,但没有原生/普通的解决方案。EcmaScript没有对此的规范吗?没有浏览器(或nodejs)有办法原生验证JSON吗? 问题的背景: 我有一个非常复杂的模式,我开发了一个。它应该与一个脚本一起工作,该脚本要求传入其中的 JSON 数据符合架构。