package data-encoding

  1. Overview
  2. Docs
type json = [
  1. | `O of (string * json) list
  2. | `Bool of bool
  3. | `Float of float
  4. | `A of json list
  5. | `Null
  6. | `String of string
]

In memory JSON data, compatible with Ezjsonm.

type t = json
type schema = Json_schema.schema
val encoding : json Encoding.t

Encodes raw JSON data (BSON is used for binary).

val schema_encoding : schema Encoding.t

Encodes a JSON schema (BSON encoded for binary).

val convert : 'a Encoding.t -> 'a Json_encoding.encoding
val schema : ?definitions_path:string -> 'a Encoding.t -> schema

Generate a schema from an encoding.

val construct : 't Encoding.t -> 't -> json

Construct a JSON object from an encoding.

val destruct : 't Encoding.t -> json -> 't

Destruct a JSON object into a value. Fail with an exception if the JSON object and encoding do not match..

JSON Error.

type path = path_item list
and path_item = [
  1. | `Field of string
    (*

    A field in an object.

    *)
  2. | `Index of int
    (*

    An index in an array.

    *)
  3. | `Star
    (*

    Any / every field or index.

    *)
  4. | `Next
    (*

    The next element after an array.

    *)
]

A set of accessors that point to a location in a JSON object.

exception Cannot_destruct of path * exn

Exception raised by destructors, with the location in the original JSON structure and the specific error.

exception Unexpected of string * string

Unexpected kind of data encountered, with the expectation.

exception No_case_matched of exn list

Some union couldn't be destructed, with the reasons for each case.

exception Bad_array_size of int * int

Array of unexpected size encountered, with the expectation.

exception Missing_field of string

Missing field in an object.

exception Unexpected_field of string

Supernumerary field in an object.

val print_error : ?print_unknown:(Stdlib.Format.formatter -> exn -> unit) -> Stdlib.Format.formatter -> exn -> unit
val cannot_destruct : ('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 -> 'a

Helpers for writing encoders.

val wrap_error : ('a -> 'b) -> 'a -> 'b
val from_string : string -> (json, string) Stdlib.result

Read a JSON document from a string.

val to_string : ?newline:bool -> ?minify:bool -> json -> string

Write a JSON document to a string. This goes via an intermediate buffer and so may be slow on large documents.

val pp : Stdlib.Format.formatter -> json -> unit