The ajv library is a very thin wrapper around the
awesome AJV JSON
validation library. The essential change between the syntax presented in
the official AJV Readme
is exchanging JavaScript’s dot operator (.) with R’s
dollar-sign operator ($).
Note that care must be taken in transforming R objects to JSON,
because of R’s everything-is-a-vector philosopy. Hence, for convenience
file paths to valid JSON (.json) and YAML
(.yml or .yaml) may be used wherever an object
is expected.
# install.packages("devtools") # (if not already installed)
devtools::install_github("jdthorpe/ajvr")The fastest validation call:
library('ajv')
var ajv = Ajv() # options can be passed, e.g. list(allErrors= TRUE)
var validate = ajv$compile(schema)
var valid = validate(data)
if (!valid) print(validate$errors)or with less code
# ...
var valid = ajv$validate(schema, data)
if (!valid) print(ajv$errors)
# ...or
# ...
ajv$addSchema(schema, 'mySchema')
var valid = ajv$validate('mySchema', data)
if (!valid) print(ajv$errorsText())
# ...Note that in each of these calls, schema and
data arguments may be a valid JSON string, an R object
(i.e. list(...)), a connection to a JSON file, or the file
name of JSON or YAML file. YAML files are parsed via js-yaml’s
safeLoad() method.