Library
Module
Module type
Parameter
Class
Class type
JSON decoding.
val show_error : error -> string
Convert a JSON parse error to a string.
exception Error of error
Exception that can happen when parsing or reading JSON.
type u = Ezjsonm.value
JSON unannotated ASTs.
Raise Error
.
The JSON.t
argument is used to annotate the error message with the location of the JSON value.
val encode : t -> string
Encode a JSON annotated AST into a string.
val encode_u : u -> string
Encode a JSON unannotated AST into a string.
val encode_to_file : string -> t -> unit
Encode a JSON annotated AST into a file.
val encode_to_file_u : string -> u -> unit
Encode a JSON unannotated AST into a file.
val parse_file : string -> t
Parse a JSON file.
val parse : origin:string -> string -> t
Parse a JSON string.
val parse_opt : origin:string -> string -> t option
Same as parse
, but return None
instead of raising Error
.
The general pattern for the accessors below is that only as_x
functions can fail. Getters get
and geti
return `Null
instead of failing. This allows to chain them and only test for errors at the end with as_x
, either by raising Error
or by returning None
(with the as_x_opt
variant).
Internally, the actual error which is printed is the correct one. For instance, with json |-> "x" |> as_int
, if json
is not an object, the call to as_int
causes the test to fail with "<origin>: not an object"
where <origin>
is the ~origin
you gave to parse
. If json
is an object but "x"
does not exist, as_int
causes the test to fail with "<origin>: missing field: x"
. If "x"
exists but is not an integer, as_int
causes the test to fail with "<origin> at .x: expected an integer"
.
Get the value for a field of a JSON object.
If the JSON value is not an object, or if the field does not exist, return `Null
.
Get the value for a field of a JSON array.
If the JSON value is not an array, or if the field does not exist, return `Null
.
Updates an object with a (key, value)
pair.
put (key, value) obj
puts value
under key
in obj
. If the key
already exists, it is overwritten. Otherwise a new key is added at the end of the object.
Alters the value of a specific key in a JSON object by applying its value to a function. Returns updated object.
update key f obj
is equivalent to put (key, f (get key obj)) obj
.
Note: if key
is not present in obj
, `Null
is passed to f
instead.
val is_null : t -> bool
Test whether a JSON value is `Null
.
Return None
if a JSON value is `Null
, Some
otherwise.
Example: JSON.(json |> as_opt |> Option.map read_record)
val as_bool : t -> bool
Get the value from a `Bool
node.
val as_bool_opt : t -> bool option
Same as as_bool
, but return None
instead of raising Error
.
val is_bool : t -> bool
Test whether as_bool
would succeed.
val as_int : t -> int
Get the integer value from a `Float
or `String
node.
val as_int_opt : t -> int option
Same as as_int
, but return None
instead of raising Error
.
val is_int : t -> bool
Test whether as_int
would succeed.
val as_int64 : t -> int64
Get the integer value from a `Float
or `String
node (64-bit version).
val as_int64_opt : t -> int64 option
Same as as_int64
, but return None
instead of raising Error
.
val is_int64 : t -> bool
Test whether as_int64
would succeed.
val as_float : t -> float
Get the float value from a `Float
or `String
node.
val as_float_opt : t -> float option
Same as as_float
, but return None
instead of raising Error
.
val is_float : t -> bool
Test whether as_float
would succeed.
val as_string : t -> string
Get the value from a `String
node.
val as_string_opt : t -> string option
Same as as_string
, but return None
instead of raising Error
.
val is_string : t -> bool
Test whether as_string
would succeed.
val is_list : t -> bool
Test whether as_list
would succeed.
Same as as_object
, but return None
instead of raising Error
.
val is_object : t -> bool
Test whether as_object
would succeed.