加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – JSON模式下的JSON数据验证

发布时间:2020-12-17 03:23:26 所属栏目:百科 来源:网络整理
导读:我正在尝试用 ruby gem json-schema验证一些json数据. 我有以下架构: {"$schema": "http://json-schema.org/draft-04/schema#","title": "User","description": "A User","type": "object","properties": { "name": { "description": "The user name","type
我正在尝试用 ruby gem json-schema验证一些json数据.

我有以下架构:

{
"$schema": "http://json-schema.org/draft-04/schema#","title": "User","description": "A User","type": "object","properties": {  
        "name": {
            "description": "The user name","type": "string"
        },"e-mail": {
            "description": "The user e-mail","type": "string"
        }  
},"required": ["name","e-mail"]    
}

以及以下json数据:

{
"name": "John Doe","e-mail": "john@doe.com","username": "johndoe"
}

并且使用此数据作为输入的JSON :: Validator.validate返回true.

不应该是假的,因为架构上没有指定用户名吗?

解决方法

您需要在JSON模式中定义 additionalProperties并将其设置为false:

{
  "$schema": "http://json-schema.org/draft-04/schema#","properties": {  
    "name": {
      "description": "The user name","type": "string"
    },"e-mail": {
      "description": "The user e-mail","type": "string"
    }  
  },"e-mail"],"additionalProperties": false
}

现在验证应该按预期返回false:

require 'json'
require 'json-schema'

schema = JSON.load('...')
data = JSON.load('...')
JSON::Validator.validate(schema,data)
# => false

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读