package yojson
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=656fc65f794186274f8b961dc38daba9e2de2fc993829291defbda2186812cc6
md5=b89d39ca3f8c532abe5f547ad3b8f84d
doc/yojson/Yojson/Basic/index.html
Module Yojson.Basic
This module supports standard JSON nodes only, i.e. no special syntax for variants or tuples as supported by Yojson.Safe. Arbitrary integers are not supported as they must all fit within the standard OCaml int type (31 or 63 bits depending on the platform).
The main advantage of this module is its simplicity.
Type of the JSON tree
type t = [ | `Null| `Bool of bool| `Int of int| `Float of float| `String of string| `Assoc of (string * t) list| `List of t list
]All possible cases defined in Yojson:
- `Null: JSON null
- `Bool of bool: JSON boolean
- `Int of int: JSON number without decimal point or exponent.
- `Intlit of string: JSON number without decimal point or exponent, preserved as a string.
- `Float of float: JSON number, Infinity, -Infinity or NaN.
- `Floatlit of string: JSON number, Infinity, -Infinity or NaN, preserved as a string.
- `String of string: JSON string. Bytes in the range 128-255 are preserved as-is without encoding validation for both reading and writing.
- `Stringlit of string: JSON string literal including the double quotes.
- `Assoc of (string * json) list: JSON object.
- `List of json list: JSON array.
- `Tuple of json list: Tuple (non-standard extension of JSON). Syntax:
("abc", 123). - `Variant of (string * json option): Variant (non-standard extension of JSON). Syntax:
<"Foo">or<"Bar":123>.
type json = t* Compatibility type alias for type `t`
JSON writers
val to_string : ?buf:Bi_outbuf.t -> ?len:int -> ?std:bool -> t -> stringWrite a compact JSON value to a string.
val to_channel :
?buf:Bi_outbuf.t ->
?len:int ->
?std:bool ->
out_channel ->
t ->
unitWrite a compact JSON value to a channel.
See to_string for the role of the other optional arguments.
val to_output :
?buf:Bi_outbuf.t ->
?len:int ->
?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 other optional arguments.
val to_file : ?len:int -> ?std:bool -> string -> t -> unitWrite a compact JSON value to a file. See to_string for the role of the optional arguments.
val to_outbuf : ?std:bool -> Bi_outbuf.t -> t -> unitWrite a compact JSON value to an existing buffer. See to_string for the role of the optional argument.
val stream_to_string :
?buf:Bi_outbuf.t ->
?len:int ->
?std:bool ->
t Stream.t ->
stringWrite a newline-separated sequence of compact one-line JSON values to a string. See to_string for the role of the optional arguments.
val stream_to_channel :
?buf:Bi_outbuf.t ->
?len:int ->
?std:bool ->
out_channel ->
t Stream.t ->
unitWrite a newline-separated sequence of compact one-line JSON values to a channel. See to_channel for the role of the optional arguments.
Write a newline-separated sequence of compact one-line JSON values to a file. See to_string for the role of the optional arguments.
val stream_to_outbuf : ?std:bool -> Bi_outbuf.t -> t Stream.t -> unitWrite a newline-separated sequence of compact one-line JSON values to an existing buffer. See to_string for the role of the optional arguments.
val write_t : Bi_outbuf.t -> t -> unitWrite the given JSON value to the given buffer. Provided as a writer function for atdgen.
Miscellaneous
Sort object fields (stable sort, comparing field names and treating them as byte sequences)
val pp : 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.
JSON pretty-printing
val pretty_format : ?std:bool -> t -> Easy_format.tConvert into a pretty-printable tree. See to_string for the role of the optional std argument.
val pretty_print : ?std:bool -> 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.
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.
Combined parser and pretty-printer. See to_string for the role of the optional std argument.
Combined parser and printer. See to_string for the role of the optional std argument.
JSON readers
val from_string : ?buf:Bi_outbuf.t -> ?fname:string -> ?lnum:int -> string -> tRead a JSON value from a string.
val from_channel :
?buf:Bi_outbuf.t ->
?fname:string ->
?lnum:int ->
in_channel ->
tRead a JSON value from a channel. See from_string for the meaning of the optional arguments.
val from_file : ?buf:Bi_outbuf.t -> ?fname:string -> ?lnum:int -> string -> tRead a JSON value from a file. See from_string for the meaning of the optional arguments.
type lexer_state = Lexer_state.t = {buf : Bi_outbuf.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:Bi_outbuf.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 -> 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.
val stream_from_string :
?buf:Bi_outbuf.t ->
?fname:string ->
?lnum:int ->
string ->
t Stream.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.
val stream_from_channel :
?buf:Bi_outbuf.t ->
?fin:(unit -> unit) ->
?fname:string ->
?lnum:int ->
in_channel ->
t Stream.tInput a sequence of JSON values from a channel. Whitespace between JSON values is fine but not required.
See from_string for the meaning of the other optional arguments.
val stream_from_file :
?buf:Bi_outbuf.t ->
?fname:string ->
?lnum:int ->
string ->
t Stream.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.
val stream_from_lexbuf :
lexer_state ->
?fin:(unit -> unit) ->
Lexing.lexbuf ->
t Stream.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.
See stream_from_channel for the meaning of the optional fin argument.
The type of values resulting from a parsing attempt of a JSON value.
val linestream_from_channel :
?buf:Bi_outbuf.t ->
?fin:(unit -> unit) ->
?fname:string ->
?lnum:int ->
in_channel ->
json_line Stream.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 stream_from_channel for the meaning of the optional fin argument. See from_string for the meaning of the other optional arguments.
val linestream_from_file :
?buf:Bi_outbuf.t ->
?fname:string ->
?lnum:int ->
string ->
json_line Stream.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 stream_from_channel for the meaning of the optional fin argument. See from_string for the meaning of the other optional arguments.
val read_t : lexer_state -> Lexing.lexbuf -> tRead a JSON value from the given lexer_state and lexing buffer and return it. Provided as a reader function for atdgen.