Liking cljdoc? Tell your friends :D

License Clojars Project

Clojure JSON Schema Validator

[luposlip/json-schema "0.1.3"]

A Clojure library for JSON validation according to JSON Schema https://json-schema.org.

It's very simple, and supports JSON Schema Draft-07.

Usage

Currently this library can only be used to validate data based on a JSON Schema.

It has a single public function, validate that return nil when no errors are found.

All found errors will cause the function to throw an instance of clojure.lang.ExceptionInfo, which can be inspected with the help of ex-data and the likes.

If you're using Clojure 1.7 or newer, you can convert any Throwable to a map via Throwable->map.

To switch draft versions, simply use the according version notation in the $schema uri (in the root of the JSON document):

{"$schema": "http://json-schema.org/draft-04/schema", ...}

or:
{"$schema": "http://json-schema.org/draft-06/schema", ...}

or:
{"$schema": "http://json-schema.org/draft-07/schema", ...}

JSON and JSON Schema params has to be input as either a JSON encoded string or EDN (map for both or vector for JSON).

Example usage:

(let [schema {:$schema "http://json-schema.org/draft-07/schema#"
              :id "https://luposlip.com/some-schema.json"
              :type "object"
              :properties {:id {:type "number"
                                :exclusiveMinimum 0}}
              :required [:id]}
      json "{\"id\": 0.001}"] ;; get from url, or anywhere
  (validate schema json)
  (comment do whatever you only wanna do when JSON is valid)
  :success)

Pseudo-example for pipelining:

(->> huge-seq-of-edn-or-jsonstrings
     (map do-stuff-to-each-doc)
     (map do-even-more-to-each)
     (map (fn [doc]
         (json-schema/validate
             (-> "resources/json-schema.json"
                 slurp
                 (cheshire.core/parse-string true))
             doc)))
     (lazily-save-docs-to-disk "/path/to/output-filename.ndjson")
     (dorun))

More usage examples can be seen in the tests.

Thanks

To the maintainers of: https://github.com/everit-org/json-schema, on which this Clojure Library is based.

License

Copyright © 2019 Henrik Mohr

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0.

This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close