Yojson.SafeThis module supports a specific syntax for variants and tuples in addition to the standard JSON nodes. Arbitrary integers are supported and represented as a decimal string using `Intlit when they cannot be represented using OCaml's int type (31 or 63 bits depending on the platform).
This module is recommended for intensive use or OCaml-friendly use of JSON.
type t = [ | `Null| `Bool of bool| `Int of int| `Intlit of string| `Float of float| `String of string| `Assoc of (string * t) list| `List of t list| `Tuple of t list| `Variant of string * t option ]All possible cases defined in Yojson:
("abc", 123).<"Foo"> or <"Bar":123>.val pp : Stdlib.Format.formatter -> t -> unitPretty printer, useful for debugging
val show : t -> stringConvert value to string, useful for debugging
equal a b is the monomorphic equality. Determines whether two JSON values are considered equal. In the case of JSON objects, the order of the keys does not matter, except for duplicate keys which will be considered equal as long as they are in the same input order.
Tuples are converted to JSON arrays, Variants are converted to JSON strings or arrays of a string (constructor) and a json value (argument). Long integers are converted to JSON strings.
Examples:
`Tuple [ `Int 1; `Float 2.3 ] -> `List [ `Int 1; `Float 2.3 ]
`Variant ("A", None) -> `String "A"
`Variant ("B", Some x) -> `List [ `String "B", x ]
`Intlit "12345678901234567890" -> `String "12345678901234567890"val to_string :
?buf:Stdlib.Buffer.t ->
?len:int ->
?suf:string ->
?std:bool ->
t ->
stringWrite a compact JSON value to a string.
val to_channel :
?buf:Stdlib.Buffer.t ->
?len:int ->
?suf:string ->
?std:bool ->
out_channel ->
t ->
unitWrite a compact JSON value to a channel. Note: the out_channel is not flushed by this function.
See to_string for the role of the optional arguments and raised exceptions.
val to_output :
?buf:Stdlib.Buffer.t ->
?len:int ->
?suf:string ->
?std:bool ->
< output : string -> int -> int -> int.. > ->
t ->
unitWrite a compact JSON value to an OO channel.
See to_string for the role of the optional arguments and raised exceptions.
val to_file : ?len:int -> ?std:bool -> ?suf:string -> string -> t -> unitWrite a compact JSON value to a file. See to_string for the role of the optional arguments and raised exceptions.
val to_buffer : ?suf:string -> ?std:bool -> Stdlib.Buffer.t -> t -> unitWrite a compact JSON value to an existing buffer. See to_string for the role of the optional argument and raised exceptions.
val seq_to_string :
?buf:Stdlib.Buffer.t ->
?len:int ->
?suf:string ->
?std:bool ->
t Stdlib.Seq.t ->
stringWrite a sequence of suf-suffixed compact one-line JSON values to a string.
val seq_to_channel :
?buf:Stdlib.Buffer.t ->
?len:int ->
?suf:string ->
?std:bool ->
out_channel ->
t Stdlib.Seq.t ->
unitWrite a sequence of suf-suffixed compact one-line JSON values to a channel.
val seq_to_file :
?len:int ->
?suf:string ->
?std:bool ->
string ->
t Stdlib.Seq.t ->
unitWrite a sequence of suf-suffixed compact one-line JSON values to a file.
val seq_to_buffer :
?suf:string ->
?std:bool ->
Stdlib.Buffer.t ->
t Stdlib.Seq.t ->
unitWrite a sequence of suf-suffixed compact one-line JSON values to an existing buffer.
val write_t : Stdlib.Buffer.t -> t -> unitWrite the given JSON value to the given buffer. Provided as a writer function for atdgen.
Sort object fields (stable sort, comparing field names and treating them as byte sequences)
val pretty_print : ?std:bool -> Stdlib.Format.formatter -> t -> unitPretty-print into a Format.formatter. See to_string for the role of the optional std argument.
val pretty_to_string : ?std:bool -> t -> stringPretty-print into a string. See to_string for the role of the optional std argument. See pretty_print for raised exceptions.
val pretty_to_channel : ?std:bool -> out_channel -> t -> unitPretty-print to a channel. See to_string for the role of the optional std argument. See pretty_print for raised exceptions.
Combined parser and pretty-printer. See to_string for the role of the optional std argument and raised exceptions.
Combined parser and printer. See to_string for the role of the optional std argument and raised exceptions.
val from_string :
?buf:Stdlib.Buffer.t ->
?fname:string ->
?lnum:int ->
string ->
tRead a JSON value from a string.
val from_channel :
?buf:Stdlib.Buffer.t ->
?fname:string ->
?lnum:int ->
in_channel ->
tRead a JSON value from a channel. See from_string for the meaning of the optional arguments and raised exceptions.
val from_file :
?buf:Stdlib.Buffer.t ->
?fname:string ->
?lnum:int ->
string ->
tRead a JSON value from a file. See from_string for the meaning of the optional arguments and raised exceptions.
type lexer_state = {buf : Stdlib.Buffer.t;mutable lnum : int;mutable bol : int;mutable fname : string option;}This alias is provided for backward compatibility. New code should refer to Yojson.lexer_state directly.
val init_lexer :
?buf:Stdlib.Buffer.t ->
?fname:string ->
?lnum:int ->
unit ->
lexer_stateThis alias is provided for backward compatibility. New code should use Yojson.init_lexer directly.
val from_lexbuf : lexer_state -> ?stream:bool -> Stdlib.Lexing.lexbuf -> tRead a JSON value from a lexbuf. A valid initial lexer_state can be created with init_lexer. See from_string for the meaning of the optional arguments and raised exceptions.
val seq_from_string :
?buf:Stdlib.Buffer.t ->
?fname:string ->
?lnum:int ->
string ->
t Stdlib.Seq.tInput a sequence of JSON values from a string. Whitespace between JSON values is fine but not required. See from_string for the meaning of the optional arguments and raised exceptions.
val seq_from_channel :
?buf:Stdlib.Buffer.t ->
?fin:(unit -> unit) ->
?fname:string ->
?lnum:int ->
in_channel ->
t Stdlib.Seq.tInput a sequence of JSON values from a channel. Whitespace between JSON values is fine but not required.
val seq_from_file :
?buf:Stdlib.Buffer.t ->
?fname:string ->
?lnum:int ->
string ->
t Stdlib.Seq.tInput a sequence of JSON values from a file. Whitespace between JSON values is fine but not required.
See from_string for the meaning of the optional arguments and raised exceptions.
val seq_from_lexbuf :
lexer_state ->
?fin:(unit -> unit) ->
Stdlib.Lexing.lexbuf ->
t Stdlib.Seq.tInput a sequence of JSON values from a lexbuf. A valid initial lexer_state can be created with init_lexer. Whitespace between JSON values is fine but not required.
The type of values resulting from a parsing attempt of a JSON value.
val lineseq_from_channel :
?buf:Stdlib.Buffer.t ->
?fin:(unit -> unit) ->
?fname:string ->
?lnum:int ->
in_channel ->
json_line Stdlib.Seq.tInput a sequence of JSON values, one per line, from a channel. Exceptions raised when reading malformed lines are caught and represented using `Exn.
See seq_from_channel for the meaning of the optional fin argument. See from_string for the meaning of the other optional arguments and raised exceptions.
val lineseq_from_file :
?buf:Stdlib.Buffer.t ->
?fname:string ->
?lnum:int ->
string ->
json_line Stdlib.Seq.tInput a sequence of JSON values, one per line, from a file. Exceptions raised when reading malformed lines are caught and represented using `Exn.
See seq_from_channel for the meaning of the optional fin argument. See from_string for the meaning of the other optional arguments and raised exceptions.
val read_t : lexer_state -> Stdlib.Lexing.lexbuf -> tRead a JSON value from the given lexer_state and lexing buffer and return it. Provided as a reader function for atdgen.
module Util : sig ... endThis module provides combinators for extracting fields from JSON values.