Module Yojson


module Yojson: sig .. end
The Yojson library provides runtime functions for reading and writing JSON data from OCaml. It addresses a few shortcomings of its predecessor json-wheel and is about twice as fast (2.7x reading, 1.3x writing; results may vary). The design goals of Yojson are the following:
Author(s): Martin Jambon
See also JSON specification


Shared types and functions


val version : string
exception Json_error of string
val json_error : string -> 'a

type lexer_state = {
   buf : Bi_outbuf.t; (*Buffer used to accumulate substrings*)
   mutable lnum : int; (*Current line number (counting from 1)*)
   mutable bol : int; (*Absolute position of the first character of the current line (counting from 0)*)
   mutable fname : string option; (*Name referencing the input file in error messages*)
}
module Lexer_state: sig .. end
val init_lexer : ?buf:Bi_outbuf.t -> ?fname:string -> ?lnum:int -> unit -> lexer_state
Create a fresh lexer_state record.

Basic JSON tree type


module Basic: sig .. end

Multipurpose JSON tree type


module Safe: sig .. end

JSON tree type with literal int/float/string leaves


module Raw: sig .. end

Supertype of all JSON tree types



Type of the JSON tree


type json = [ `Assoc of (string * json) list
| `Bool of bool
| `Float of float
| `Floatlit of string
| `Int of int
| `Intlit of string
| `List of json list
| `Null
| `String of string
| `Stringlit of string
| `Tuple of json list
| `Variant of string * json option ]
All possible cases defined in Yojson:
type json_max = json 

JSON writers


val to_string : ?buf:Bi_outbuf.t -> ?len:int -> ?std:bool -> json -> string
Write a compact JSON value to a string.
buf : allows to reuse an existing buffer created with Bi_outbuf.create. The buffer is cleared of all contents before starting and right before returning.
len : initial length of the output buffer.
std : use only standard JSON syntax, i.e. convert tuples and variants into standard JSON (if applicable), refuse to print NaN and infinities, require the root node to be either an object or an array. Default is false.
val to_channel : ?buf:Bi_outbuf.t ->
?len:int -> ?std:bool -> Pervasives.out_channel -> json -> unit
Write a compact JSON value to a channel.
buf : allows to reuse an existing buffer created with Bi_outbuf.create_channel_writer on the same channel. buf is flushed right before to_channel returns but the out_channel is not flushed automatically.

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; .. > -> json -> unit
Write a compact JSON value to an OO channel.
buf : allows to reuse an existing buffer created with Bi_outbuf.create_output_writer on the same channel. buf is flushed right before to_output returns but the channel itself is not flushed automatically.

See to_string for the role of the other optional arguments.

val to_file : ?len:int -> ?std:bool -> string -> json -> unit
Write 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 -> json -> unit
Write 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 -> json Stream.t -> string
Write 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 -> Pervasives.out_channel -> json Stream.t -> unit
Write a newline-separated sequence of compact one-line JSON values to a channel. See to_channel for the role of the optional arguments.
val stream_to_file : ?len:int -> ?std:bool -> string -> json Stream.t -> unit
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 -> json Stream.t -> unit
Write a newline-separated sequence of compact one-line JSON values to an existing buffer. See to_string for the role of the optional arguments.

JSON pretty-printing


val pretty_format : ?std:bool -> json -> Easy_format.t
Convert into a pretty-printable tree. See to_string for the role of the optional std argument.
See also Easy-format
val pretty_to_string : ?std:bool -> json -> string
Pretty-print into a string. See to_string for the role of the optional std argument.
val pretty_to_channel : ?std:bool -> Pervasives.out_channel -> json -> unit
Pretty-print to a channel. See to_string for the role of the optional std argument.