Packages
jsv
0.11.2
0.21.2
0.21.1
0.21.0
0.20.0
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.3
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.5
0.11.4
0.11.3
retired
0.11.2
0.11.1
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
A JSON Schema Validator with complete support for the latest specifications.
Current section
Files
Jump to
Current section
Files
README.md
# JSV
<!-- rdmx :badges
hexpm : "jsv?color=4e2a8e"
github_action : "lud/jsv/elixir.yaml?label=CI&branch=main"
license : jsv
-->
[](https://hex.pm/packages/jsv)
[](https://github.com/lud/jsv/actions/workflows/elixir.yaml?query=branch%3Amain)
[](https://hex.pm/packages/jsv)
<!-- rdmx /:badges -->
JSV is a JSON Schema Validation library for Elixir with full support for the latest JSON Schema specification.
## Documentation
[API documentation is available on hexdocs.pm](https://hexdocs.pm/jsv/).
## Supported Dialects
JSV's goal is to support 100% of the latest specification, which is currently 2020-12. Additional support for Draft 7 is also included.
* [](https://bowtie.report/#/implementations/elixir-jsv)
* [](https://bowtie.report/#/implementations/elixir-jsv)
## Installation
<!-- rdmx :app_dep vsn:$app_vsn -->
```elixir
def deps do
[
{:jsv, "~> 0.11"},
]
end
```
<!-- rdmx /:app_dep -->
**Optional** dependencies can be added to support more features:
```elixir
def deps do
[
# JSV Supports Decimal and will validate Decimal structs as numbers.
{:decimal, "~> 2.0"},
# Decoding schemas resolved via HTTP requires JSON support for Elixir
# versions prior to 1.18
{:jason, "~> 1.0"},
# OR
{:poison, "~> 6.0 or ~> 5.0"},
]
end
```
## Basic Usage
Here is an example of how to use the library:
```elixir
schema = %{
type: :object,
properties: %{
name: %{type: :string}
},
required: [:name]
}
root = JSV.build!(schema)
case JSV.validate(%{"name" => "Alice"}, root) do
{:ok, data} ->
{:ok, data}
# Errors can be converted into JSON-compatible structures for API responses
# or logging.
{:error, validation_error} ->
{:error, JSON.encode!(JSV.normalize_error(validation_error))}
end
```
JSV offers many additional features! Check the documentation for more details.
## Contributing
Pull requests are welcome, provided they include appropriate tests and documentation.