Page
Library
Module
Module type
Parameter
Class
Class type
Source
Decode.MakeDerive decoders for a Decodeable.value.
module M : Decodeabletype value = M.valueThe type of values to be decoded (e.g. JSON or Yaml).
type error = value exposed_errorval pp_error : Format.formatter -> error -> unittype 'a decoder = (M.value, 'a) exposed_decoderThe type of decoders.
Use the functions below to construct decoders for your data types.
To run a decoder, pass it to decode_value.
val string : string decoderDecode a string.
val int : int decoderDecode an int.
val float : float decoderDecode a float.
val bool : bool decoderDecode a bool.
Decode a collection into an OCaml list, skipping elements for which the decoder returns None.
Decode an object, requiring exactly one field.
maybe d is a decoder that always succeeds. If d succeeds with x, then maybe d succeeds with Some x, otherwise if d fails, then maybe d succeeds with None.
For example, maybe (field "hello" int):
{"hello": 123}, will succeed with Some 123{"hello": null}, will succeed with None{"world": 123}, will succeed with None["a", "list", "of", "strings"], will succeed with Nonenullable d will succeed with None if the JSON value is null. If the JSON value is non-null, it wraps the result of running x in a Some.
For example, field "hello" (nullable int):
{"hello": 123}, will succeed with Some 123{"hello": null}, will succeed with None{"world": 123}, will fail["a", "list", "of", "strings"], will failTry two decoders and then combine the result. We can use this to decode objects with many fields (but it's preferable to use Infix.(>>=) - see the README).
val keys : string list decoderDecode all of the keys of an object to a list of strings.
Decode an object into a list of key-value pairs.
Decode an object into a list of values, where the value decoder depends on the key.
keys' is for when your keys might not be strings - probably only likely for Yaml.
Decode an object into a String.Map.t.
val succeed : 'a -> 'a decoderA decoder that always succeeds with the argument, ignoring the input.
val fail : string -> 'a decoderA decoder that always fails with the given message, ignoring the input.
Create decoders that depend on previous results.
Recursive decoders.
let my_decoder = fix (fun my_decoder -> ...) allows you to define my_decoder in terms of itself.
module Infix : sig ... endmodule Pipeline : sig ... end