---
name: "json-schema-eval"
section: "1p"
platform: "linux"
package: "libjson-schema-modern-perl"
version: "0.611-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/json-schema-eval"
---

# json-schema-eval(1p)

A command-line interface to JSON::Schema::Modern::evaluate()

## NAME

json-schema-eval - A command-line interface to JSON::Schema::Modern::evaluate()

## VERSION

version 0.611

## SYNOPSIS

```
  json-schema-eval \
    [ --specification_version|version <version> ] \
    [ --output_format <format> ] \
    [ --short_circuit ] \
    [ --max_traversal_depth <depth> ] \
    [ --validate_formats ] \
    [ --validate_content_schemas ] \
    [ --collect_annotations ] \
    [ --strict ] \
    [ --data <filename> ] \
    [ --schema <filename> ] \
    [ --validate-schema [filename] ]
    [ --add-schema <filename> ]
    [ --dump-identifiers ]
```

## DESCRIPTION

A command-line interface to "evaluate" in JSON::Schema::Modern.

*data.json* contains:

```
  {"hello": 42.1}
```

*schema.json* contains:

```
  {"properties": {"hello": {"type": ["string", "integer"]}}}
```

Run:

```
  json-schema-eval --data data.json --schema schema.json
```

produces output:

```
  {
    "errors" : [
      {
        "error" : "got number, not one of string, integer",
        "instanceLocation" : "/hello",
        "keywordLocation" : "/properties/hello/type"
      },
      {
        "error" : "not all properties are valid",
        "instanceLocation" : "",
        "keywordLocation" : "/properties"
      }
    ],
    "valid" : false
  }
```

Or run:

```
  json-schema-eval --validate-schema schema.json
```

produces output:

```
  {
    "valid": true
  }
```

The exit value (`$?`) is 0 when the result is valid, 1 when it is invalid, and some other non-zero value if an exception occurred.

## OPTIONS

All boolean and string options used as constructors to JSON::Schema::Modern are available.

Additionally, `"--data"` is used to provide the filename containing a json-encoded data instance, and `"--schema"` provides the filename containing a json-encoded schema.

If either or both of these are not provided, STDIN is used as input.

Only JSON-encoded data and schemas are supported at this time.

Alternatively, you can use `"--validate-schema"` and either provide a filename containing a json-encoded schema, or omit the argument to read a schema from STDIN. The schema will be evaluated against its meta-schema for the corresponding specification version.

Additional schemas, that you wish to use via the `$ref` keyword, can be added with `"--add-schema <filename>"`. The actual filename is insignificant: Make sure you use an `$id` keyword within that schema that matches the value you use in the `$ref`. This option can be used more than once.

## AVAILABILITY

This executable is available on modern Debian versions (via `"apt-get"`) as the `"libjson-schema-modern-perl"` package.

## SUPPORT

Bugs may be submitted through \<https://github.com/karenetheridge/JSON-Schema-Modern/issues\>.

I am also usually active on irc, as 'ether' at `"irc.perl.org"` and `"irc.libera.chat"`.

You can also find me on the JSON Schema Slack server \<https://json-schema.slack.com\> and OpenAPI Slack server \<https://open-api.slack.com\>, which are also great resources for finding help.

## AUTHOR

Karen Etheridge \<ether@cpan.org\>

## COPYRIGHT AND LICENCE

This software is copyright (c) 2020 by Karen Etheridge.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

Some schema files have their own licence, in share/LICENSE.
