package jsonxt

  1. Overview
  2. Docs

Basic_stream supports parsing and writing JSON data that conforms to the Json_stream.Basic.json type as a stream of Json_stream.Basic.json objects. This includes support for integers which are not part of the JSON standard

type json_stream = Json_stream.Basic.json

Reader functions

type stream

The steaming reader provides two interfaces to decode input into a stream of json_stream elements

  • The internal create_* and decode_stream mechanism
  • A stream_from_* json_stream Stream.t based approach

Note that the returned stream has no structure thus [1,2,3] will be returned as the stream `Ae, `Int 1, `Int 2, `Int 3, `Ae (assuming basic or extended compliance)

json_stream_* and decode functions

val json_stream_of_string : string -> stream

json_stream_of_string s creates a stream parser that returns a series of json_stream elements from the string s.

val json_stream_of_channel : in_channel -> stream

json_stream_of_channel ic creates a stream parser that returns a series of json_stream elements from the in_channel ic.

val json_stream_of_function : (bytes -> int -> int) -> stream

json_stream_of_function f creates a stream parser that returns a series of json_stream elements from the reader function f. f buf len takes a buffer buf and maximum length len and returns the number of bytes read to a maximum of len

val decode_stream : stream -> (json_stream option, string) result

decode_stream t decode the next element of the input, Ok None indicates end of the stream

Stream.t functions

These functions provide a Stream.t API on top of the json_stream_of_* and decode_stream functions.

val stream_from_string : string -> json_stream Stream.t

stream_from_string s creates a json_stream Stream.t from json_stream_of_string s and decode_stream

val stream_from_channel : in_channel -> json_stream Stream.t

stream_from_channel ic creates a json_stream Stream.t from json_stream_of_channel ic and decode_stream

val stream_from_function : (bytes -> int -> int) -> json_stream Stream.t

stream_from_function f creates a json_stream Stream.t from json_stream_of_function f and decode_stream

Writer functions

type t
val create_encoder' : add_char:(char -> unit) -> add_string:(string -> unit) -> incr:int -> eol:string -> t

create_encoder' ~add_char ~add_string ~incr ~eol is the low level function used to create the various stream encoders. The add_char c and add_string s functions handle adding a char c and string s to the output respectively.

incr and eol work together to output human readable output. incr defines the increase in indentation and eol the end of line sequence. A type t is returned

val create_encoder : add_char:(char -> unit) -> add_string:(string -> unit) -> t

create_encoder ~add_char ~add_string creates a compact encoder. add_char and add_string add a char and string to the output respectively A type t is returned

val create_encoder_hum : add_char:(char -> unit) -> add_string:(string -> unit) -> t

create_encoder_hum ~add_char ~add_string creates a human readable encoder. add_char and add_string add a char and string to the output respectively. The increment is set to 2 and end of line to LF (\n). A type t is returned

val create_encoder_channel : out_channel -> t

create_encoder_channel oc creates a compact encoder outputing to channel oc

val create_encoder_channel_hum : out_channel -> t

create_encoder_channel_hum oc creates a human readable encoder outputing to channel oc

val encode_stream_exn : t -> json_stream -> unit

encode_stream_exn t json_stream encodes and outputs the element json_stream. Errors cause a Failure exception to be raised.

val encode_stream : t -> json_stream -> (unit, string) result

encode_stream_exn t json_stream encodes and outputs the element json_stream. Errors are reported via the result value.