Nothing
## ----echo = FALSE, results = "hide"-------------------------------------------
knitr::opts_chunk$set(error = FALSE)
## -----------------------------------------------------------------------------
schema <- '{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Product",
"description": "A product from Acme\'s catalog",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "integer"
},
"name": {
"description": "Name of the product",
"type": "string"
},
"price": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": true
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"uniqueItems": true
}
},
"required": ["id", "name", "price"]
}'
## -----------------------------------------------------------------------------
obj <- jsonvalidate::json_schema$new(schema)
## -----------------------------------------------------------------------------
path <- tempfile()
writeLines(schema, path)
obj <- jsonvalidate::json_schema$new(path)
## ----include = FALSE----------------------------------------------------------
file.remove(path)
## -----------------------------------------------------------------------------
obj$validate("{}")
## -----------------------------------------------------------------------------
obj$validate("{}", verbose = TRUE)
## ----error = TRUE-------------------------------------------------------------
try({
obj$validate("{}", error = TRUE)
})
## -----------------------------------------------------------------------------
obj$validate('{
"id": 1,
"name": "A green door",
"price": 12.50,
"tags": ["home", "green"]
}')
## -----------------------------------------------------------------------------
obj$validate('{
"id": 1,
"name": "A green door",
"price": -1,
"tags": ["home", "green"]
}', verbose = TRUE)
## -----------------------------------------------------------------------------
obj$validate('{
"id": 1,
"name": "A green door",
"price": 12.50,
"tags": ["home", "home"]
}', verbose = TRUE)
## -----------------------------------------------------------------------------
obj$validate('{
"id": "identifier",
"name": 1,
"price": -1,
"tags": ["home", "home", 1]
}', verbose = TRUE)
## -----------------------------------------------------------------------------
json <- '{
"id": 1,
"name": "A green door",
"price": 12.50,
"tags": ["home", "green"]
}'
jsonvalidate::json_validate(json, schema, engine = "ajv")
## -----------------------------------------------------------------------------
v <- jsonvalidate::json_validator(schema, engine = "ajv")
v(json)
## -----------------------------------------------------------------------------
schema <- '{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"city": { "type": "string" }
},
"type": "object",
"properties": {
"city": { "$ref": "#/definitions/city" }
}
}'
json <- '{
"city": "Firenze"
}'
jsonvalidate::json_validate(json, schema, engine = "ajv")
## -----------------------------------------------------------------------------
city_schema <- '{
"$schema": "http://json-schema.org/draft-07/schema",
"type": "string",
"enum": ["Firenze"]
}'
address_schema <- '{
"$schema": "http://json-schema.org/draft-07/schema",
"type":"object",
"properties": {
"city": { "$ref": "city.json" }
}
}'
path <- tempfile()
dir.create(path)
address_path <- file.path(path, "address.json")
city_path <- file.path(path, "city.json")
writeLines(address_schema, address_path)
writeLines(city_schema, city_path)
jsonvalidate::json_validate(json, address_path, engine = "ajv")
## -----------------------------------------------------------------------------
user_schema = '{
"$schema": "http://json-schema.org/draft-07/schema",
"type": "object",
"required": ["address"],
"properties": {
"address": {
"$ref": "sub/address.json"
}
}
}'
json <- '{
"address": {
"city": "Firenze"
}
}'
path <- tempfile()
subdir <- file.path(path, "sub")
dir.create(subdir, showWarnings = FALSE, recursive = TRUE)
city_path <- file.path(subdir, "city.json")
address_path <- file.path(subdir, "address.json")
user_path <- file.path(path, "schema.json")
writeLines(city_schema, city_path)
writeLines(address_schema, address_path)
writeLines(user_schema, user_path)
jsonvalidate::json_validate(json, user_path, engine = "ajv")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.