glazejson (glazejson v0.1.1)

View Source

Fast JSON encoding and decoding using the glaze C++ library.

By default JSON null is represented as the atom null. To change it application-wide, set the null env key in your config:

{glazejson, [{null, nil}]}.

See also [https://github.com/stephenberry/glaze]

Summary

Functions

Decode a JSON binary or iolist to an Erlang term. JSON objects are returned as maps (default).

Decode a JSON binary or iolist to an Erlang term with options.

Decode a JSON number string to a big integer.

Encode an Erlang term to a JSON binary.

Encode an Erlang term to a JSON binary with options.

Encode a big integer to its JSON string representation.

Minify a JSON binary or iolist, removing all unnecessary whitespace.

Pretty-print a JSON binary or iolist with two-space indentation.

Types

decode_opt()

-type decode_opt() ::
          return_maps | object_as_tuple | use_nil |
          {null_term, atom()} |
          {keys, atom | existing_atom | binary}.

decode_opts()

-type decode_opts() :: [decode_opt()].

Decode options:

  • return_maps - decode JSON objects as Erlang maps (default)
  • object_as_tuple - decode JSON objects as {[{K, V}]} proplists
  • use_nil - use the atom nil for JSON null
  • {null_term, Atom} - use Atom for JSON null
  • {keys, atom} - decode object keys as atoms
  • {keys, existing_atom} - decode keys as existing atoms, fall back to binary
  • {keys, binary} - decode keys as binaries (default)

encode_opt()

-type encode_opt() :: pretty | uescape | force_utf8 | use_nil | {null_term, atom()}.

encode_opts()

-type encode_opts() :: [encode_opt()].

Encode options:

  • pretty - pretty-print the JSON output
  • uescape - escape non-ASCII characters as \uXXXX sequences
  • force_utf8 - fix invalid UTF-8 sequences before encoding
  • use_nil - encode the atom nil as JSON null
  • {null_term, Atom} - encode Atom as JSON null

Functions

decode(Input)

-spec decode(binary() | iolist()) -> term().

Decode a JSON binary or iolist to an Erlang term. JSON objects are returned as maps (default).

decode(Input, Opts)

-spec decode(binary() | iolist(), decode_opts()) -> term().

Decode a JSON binary or iolist to an Erlang term with options.

decode_bigint(NumberString)

-spec decode_bigint(binary() | iolist()) -> {ok, integer()} | {error, binary()}.

Decode a JSON number string to a big integer.

encode(Data)

-spec encode(term()) -> binary().

Encode an Erlang term to a JSON binary.

encode(Data, Opts)

-spec encode(term(), encode_opts()) -> binary().

Encode an Erlang term to a JSON binary with options.

encode_bigint(BigInt)

-spec encode_bigint(integer()) -> {ok, binary()} | {error, binary()}.

Encode a big integer to its JSON string representation.

minify(Input)

-spec minify(binary() | iolist()) -> {ok, binary()} | {error, binary()}.

Minify a JSON binary or iolist, removing all unnecessary whitespace.

prettify(Input)

-spec prettify(binary() | iolist()) -> {ok, binary()} | {error, binary()}.

Pretty-print a JSON binary or iolist with two-space indentation.