BSD-3-Clause licensed by Silk
This version can be pinned in stack with:json-schema-0.7.4.2@sha256:6f1c54247006f9d55a9d656a9e83af4b06cf6b49cebdfa79aec092f21181955f,2347
Module documentation for 0.7.4.2
Depends on 12 packages
(full list with versions ) :
aeson ,
base ,
base-compat-batteries ,
containers ,
generic-aeson ,
generic-deriving ,
mtl ,
scientific ,
text ,
time ,
unordered-containers ,
vector json-schema
json-schema
is like XML schemas, but for JSON. It’s haskell specific and has no relation to json-schema.org.
The package provides
An AST type Schema
defining the structure of a JSON object.
A type class JSONSchema
to define a schema for a type.
Combinators for defining schemas.
A module for validating Aeson values against schemas.
Built-in instances matching aeson’s .
A Generics module matching aeson instances generated by generics-aeson
If you use another library for generating JSON instances (such as aeson’s built-in generics/template haskell) or write aeson instances by hand you will not get matching JSONSchema instances if you use json-schema’s generics module.
This package assumes that your ToJSON
and FromJSON
instances match.
Installation
This package is available on hackage
$ cabal install json-schema
Examples
see the examples folder or The test suite .
Changelog
0.7.4.2
Add base-compat-batteries
dependency, and remove test dependency on aeson-utils
.
0.7.4.1
aeson-0.10 produces new error messages so the test-suite was updated to reflect this.
0.7.4.0
Raise upper length limit of UTCTime
since aeson-0.9 increased the precision.
Add JSONSchema Aeson.Value
instance.
0.7.3.7
Allow generic-deriving 1.8.*
Allow vector 0.11.*
0.7.3.6
0.7.3.5
0.7.3.4
Fix compilation on GHC 7.2 and 7.4
0.7.3.3
Allow tagged 0.8.*
in test-suite
0.7.3.2
0.7.3.1
test-suite: Allow aeson-utils 0.3.*
0.7.3.0
Add JSONSchema
instances for all standard Num types and Scientific.
0.7.2.0
Add JSONSchema
instances for Double, Float, Fixed
0.7.1.1
Allow generic-deriving 1.7.*
0.7.1.0
Export GJSONSchema
type to allow clients to write type signatures for gSchema
and gSchemaWithSettings
.
0.7.0.2
0.7.0.1
Drop support for old tasty versions
0.7.0.0
Removed the Null
constructor from Schema
, use Data.JSON.Schema.Combinators.nullable
instead.
Added the Validation
module that can be used to validate a json
object against a schema and to get descriptive error messages.
Updates for Maybe
fixes in generic-aeson 0.2.0.0
including more
thorough test cases.
0.6.1.1
Bugfix: Remove underscores from fields and constructors in generated schemas to match generic-aeson.
0.6.1
Add JSONSchema instances for tuples up to length 15 (matching aeson 0.8 instances)
Specify uniqueness for JSONSchema instances for Set.
0.6
Breaking changes:
Add Constant Aeson.Value
type to Schema
Change Number to take a Bound
for the boundary. Before this the upper bound could not be -1
.
Change Value
and Array
to take a LengthBound
. The difference from Number is that these values should always be >= 0
if present.
Minor:
Add Bound { lower :: Maybe Int, upper :: Maybe Int }
Add unbounded
as a shorthand for a Bound
without restrictions
Add LengthBound { lowerLength :: Maybe Int, upperLength :: Maybe Int }
Add unboundedLength
as a shorthand for a LengthBound
without restrictions
Add remaining JSONSchema
instances based on existing Aeson instances. UTCTime
, Set
, Lazy Text
, and tuples up to length 7.
Add enum
combinator as a shorthand for creating a Choice
of Constant
s
0.5
JSONSchema
instances for Data.Vector
, Data.Map
, and Data.HashMap
Add Map
type for json objects with arbitrary keys
Add Any
type for any json value
Don’t generate empty field names in ojbects for constructors without labeled fields
Stackage is a service provided by the
Haskell Foundation
│ Originally developed by
FP Complete