Liking cljdoc? Tell your friends :D

s-exp.oda

Fast JSON parser/writer working directly on UTF-8 bytes.

Fast JSON parser/writer working directly on UTF-8 bytes.
raw docstring

parseclj

(parse input)
(parse input {:keys [key-fn max-depth max-number-length bigdec]})

Parses JSON from input (byte-array, String or InputStream) into Clojure data structures. A leading UTF-8 byte order mark is skipped.

Options:

  • :key-fn - fn of String -> map key, applied to object keys. Unset or nil leaves keys as strings. clojure.core/keyword is recognized and uses an optimized interning path. Must be pure: results are cached by fn identity, so a def'd fn gets cross-parse caching while a fresh lambda is only cached within a single parse
  • :max-depth - maximum nesting depth (default 1000)
  • :max-number-length - maximum length of a number in chars (default 1000): converting huge numbers is superlinear
  • :bigdec - read non-integer numbers as exact BigDecimals instead of doubles (default false)

Throws com.s_exp.oda.JsonParseException on invalid input; its ex-data is {:offset :line :column} (byte offset, 1-based line and column).

Parses JSON from `input` (byte-array, String or InputStream) into Clojure
data structures. A leading UTF-8 byte order mark is skipped.

Options:
* `:key-fn`            - fn of String -> map key, applied to object keys.
  Unset or nil leaves keys as strings. `clojure.core/keyword` is recognized
  and uses an optimized interning path. Must be pure: results are cached by
  fn identity, so a def'd fn gets cross-parse caching while a fresh lambda
  is only cached within a single parse
* `:max-depth`         - maximum nesting depth (default 1000)
* `:max-number-length` - maximum length of a number in chars (default
  1000): converting huge numbers is superlinear
* `:bigdec`            - read non-integer numbers as exact BigDecimals
  instead of doubles (default false)

Throws `com.s_exp.oda.JsonParseException` on invalid input; its `ex-data`
is `{:offset :line :column}` (byte offset, 1-based line and column).
sourceraw docstring

writeclj

(write x out)
(write x out {:keys [default-fn key-fn date-format max-depth]})

Writes x as JSON to out (OutputStream), flushes, does not close. See write-str for options.

Writes `x` as JSON to `out` (OutputStream), flushes, does not close.
See `write-str` for options.
sourceraw docstring

write-bytesclj

(write-bytes x)
(write-bytes x {:keys [default-fn key-fn date-format max-depth]})

Writes x as JSON UTF-8 encoded byte-array. See write-str for options.

Writes `x` as JSON UTF-8 encoded byte-array. See `write-str` for options.
sourceraw docstring

write-strclj

(write-str x)
(write-str x {:keys [default-fn key-fn date-format max-depth]})

Writes x as a JSON String.

Options:

  • :default-fn - called on values that cannot be written natively — both unsupported types AND supported types with unrepresentable values (NaN/Infinity Float/Double, also as map keys). Must return a natively writable value: it is not applied again to its own result (values nested inside the result do get it). Without it, those cases throw.
  • :key-fn - transforms each map key before dispatch. Use to handle nil keys, custom types, or normalize keys. Takes the key, returns any writable key (String, Keyword, Symbol, Number, UUID, Boolean, Character, Enum).
  • :date-format - format for java.util.Date and java.time.Instant values: a pattern string or a java.time.format.DateTimeFormatter (zone-less formatters default to UTC). Default: yyyy-MM-dd'T'HH:mm:ss'Z' at UTC. Other java.time values are written as ISO-8601 strings, Java enums by name.
  • :max-depth - maximum nesting depth (default 1000); deeper or cyclic values throw instead of overflowing the stack.
Writes `x` as a JSON String.

Options:
* `:default-fn`  - called on values that cannot be written natively — both
  unsupported types AND supported types with unrepresentable values
  (NaN/Infinity Float/Double, also as map keys). Must return a natively
  writable value: it is not applied again to its own result (values nested
  inside the result do get it). Without it, those cases throw.
* `:key-fn`      - transforms each map key before dispatch. Use to handle
  nil keys, custom types, or normalize keys. Takes the key, returns any
  writable key (String, Keyword, Symbol, Number, UUID, Boolean, Character,
  Enum).
* `:date-format` - format for java.util.Date and java.time.Instant values:
  a pattern string or a java.time.format.DateTimeFormatter (zone-less
  formatters default to UTC). Default: yyyy-MM-dd'T'HH:mm:ss'Z' at UTC.
  Other java.time values are written as ISO-8601 strings, Java enums by
  name.
* `:max-depth`   - maximum nesting depth (default 1000); deeper or cyclic
  values throw instead of overflowing the stack.
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close