Bounded JSON decoding with duplicate keys preserved until validation.
Uses the built-in JSON decoder callbacks. Object keys stay strings; no atoms are created. Byte, nesting, node, array and string ceilings apply before conversion to public maps. Parsing failures retain root paths and offsets where supplied; duplicate-key failures identify the object path. Depth starts at zero for the root value and increases for every object member or array element; the maximum is inclusive for maps and JSON alike.
Summary
Types
A JSON object whose keys remain strings; validation never creates atoms from external names.
A JSON value with string-keyed objects; invalid external terms return a validation error.
Functions
Decodes one complete bounded JSON value, rejecting duplicate keys and trailing data.
Validates already-decoded JSON data and its complete encoded byte size.
Types
A JSON object whose keys remain strings; validation never creates atoms from external names.
A JSON value with string-keyed objects; invalid external terms return a validation error.
Functions
@spec decode(binary(), [LibTmux.Filter.limit_option()]) :: {:ok, value()} | {:error, LibTmux.Error.t()}
Decodes one complete bounded JSON value, rejecting duplicate keys and trailing data.
@spec validate(term(), [LibTmux.Filter.limit_option()]) :: {:ok, value()} | {:error, LibTmux.Error.t()}
Validates already-decoded JSON data and its complete encoded byte size.