JSON data validation under JSON-schema
json, jsonschema, ruby
Solution
You need to define `additionalProperties` in your JSON Schema and set it to `false`:
{
"$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"],
"additionalProperties": false
}
Now the validation should return `false` as expected:
require 'json'
require 'json-schema'
schema = JSON.load('...')
data = JSON.load('...')
JSON::Validator.validate(schema, data)
# => false
Problem
I'm trying to validate some json data with ruby gem json-schema. I have the following schema: ``` { "$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"] } ``` and the following json data: ``` { "name": "John Doe", "e-mail": "john@doe.com", "username": "johndoe" } ``` And JSON::Validator.validate, using this data as input, returns true. Shouldn't it be false since username is not specified on the schema?