JSON encoding and decoding function construction with support for configurable key conversion.
JSON encoding and decoding function construction with support for configurable key conversion.
Default ObjectMapper instance used when none provided. Has the same
configuration as when new-object-mapper
is called with no argument.
Default ObjectMapper instance used when none provided. Has the same configuration as when [[new-object-mapper]] is called with no argument.
Meta key prefix used to detect and preserve meta fields. Defaults to '_'.
Meta key prefix used to detect and preserve meta fields. Defaults to '_'.
(->decode-key-fn)
(->decode-key-fn fn-or-opts)
Constructs a function to decode JSON keys.
With no arguments, decodes to kebab-case keywords and is _meta
aware, i.e.,
any fields with leading meta prefix will retain their meta prefix.
With a function argument, uses that function to convert both standard and meta keys while retaining leading meta prefix.
Also accepts a map option argument in place of the function which can contain:
:standard-key-fn
: the key function to use for standard fields, also
used for meta fields if no :meta-key-fn
provided.:meta-key-fn
: the key function to use for meta fields, overriding
all meta handling.Constructs a function to decode JSON keys. With no arguments, decodes to kebab-case keywords and is `_meta` aware, i.e., any fields with leading meta prefix will retain their meta prefix. With a function argument, uses that function to convert both standard and meta keys while retaining leading meta prefix. Also accepts a map option argument in place of the function which can contain: - `:standard-key-fn`: the key function to use for standard fields, also used for meta fields if no `:meta-key-fn` provided. - `:meta-key-fn`: the key function to use for meta fields, overriding all meta handling.
(->encode-key-fn)
(->encode-key-fn fn-or-opts)
Constructs a function to encode JSON keys.
With no arguments, encodes to camelCase strings and is _meta aware, i.e., any fields with leading meta prefix will retain their meta prefix.
With a function argument, uses that function to convert both standard and meta keys while retaining leading meta prefix.
Also accepts a map option argument in place of the function which can contain:
:standard-key-fn
: the key function to use for standard fields, also
used for meta fields if no :meta-key-fn provided.:meta-key-fn
: the key function to use for meta fields, overriding
all meta handling.Constructs a function to encode JSON keys. With no arguments, encodes to camelCase strings and is _meta aware, i.e., any fields with leading meta prefix will retain their meta prefix. With a function argument, uses that function to convert both standard and meta keys while retaining leading meta prefix. Also accepts a map option argument in place of the function which can contain: - `:standard-key-fn`: the key function to use for standard fields, also used for meta fields if no :meta-key-fn provided. - `:meta-key-fn`: the key function to use for meta fields, overriding all meta handling.
(defcoders & args)
Defines a pair of JSON encode / decode functions in the current namespace.
If a symbol is passed as the first argument, it is used as the "type" of
the coders such that the defined functions have the names -><type>-json
and
<-<type>-json
.
If no symbol is passed, the defined coder functions have the names ->json
and <-json
.
In addition to a type symbol, a sequence of key-value arguments can be
provided, supporting the same options as exposed on new-json-coders
allowing full control over the generated functions.
Defines a pair of JSON encode / decode functions in the current namespace. If a symbol is passed as the first argument, it is used as the "type" of the coders such that the defined functions have the names `-><type>-json` and `<-<type>-json`. If no symbol is passed, the defined coder functions have the names `->json` and `<-json`. In addition to a type symbol, a sequence of key-value arguments can be provided, supporting the same options as exposed on [[new-json-coders]] allowing full control over the generated functions.
(new-json-coders)
(new-json-coders options)
Constructs a pair of JSON encode / decode functions, at keys :->json
and
:<-json
in the returned map.
With no arguments, uses the default ObjectMapper
as returned by
new-object-mapper
. The optional argument is the same map of options as
described in the documentation for new-object-mapper
.
Constructs a pair of JSON encode / decode functions, at keys `:->json` and `:<-json` in the returned map. With no arguments, uses the default `ObjectMapper` as returned by [[new-object-mapper]]. The optional argument is the same map of options as described in the documentation for [[new-object-mapper]].
(new-json-decoder)
(new-json-decoder object-mapper)
Constructs a JSON decoder function. With no argument, uses the default
object mapper defined in *default-object-mapper*
. Optionally, takes
an ObjectMapper
to use instead.
The returned decoder returns nil on a nil or empty string value, otherwise JSON decodes it.
Constructs a JSON decoder function. With no argument, uses the default object mapper defined in [[*default-object-mapper*]]. Optionally, takes an `ObjectMapper` to use instead. The returned decoder returns nil on a nil or empty string value, otherwise JSON decodes it.
(new-json-encoder)
(new-json-encoder object-mapper)
Constructs a JSON encoder function. With no argument, uses the default
object mapper defined in *default-object-mapper*
. Optionally, takes
an ObjectMapper
to use instead.
The returned encoder returns nil on a nil value, otherwise JSON encodes it.
Constructs a JSON encoder function. With no argument, uses the default object mapper defined in [[*default-object-mapper*]]. Optionally, takes an `ObjectMapper` to use instead. The returned encoder returns nil on a nil value, otherwise JSON encodes it.
(new-object-mapper)
(new-object-mapper options)
Constructs a Jackson ObjectMapper
.
With no arguments, the returned object mapper encodes and decodes keys exactly as provided, does not produce pretty JSON and includes no additional modules.
The optional first parameter is a map of options. The following options are supported:
Mapper options | |
---|---|
:modules | vector of ObjectMapper modules |
Encoding options | |
---|---|
:pretty | set to true use Jackson's pretty-printing defaults (default: true ) |
:escape-non-ascii | set to true to escape non-ASCII characters |
:date-format | string for custom date formatting (default: yyyy-MM-dd'T'HH:mm:ss'Z' ) |
:encode-key-fn | true to coerce keyword keys to strings, false to leave them as keywords, or a function to provide custom coercion (default: the default of ->encode-key-fn ) |
:encoders | a map of custom encoders where keys should be types and values should be encoder functions |
Encoder functions take two parameters: the value to be encoded and a
JsonGenerator
object. The function should call JsonGenerator
methods to
emit the desired JSON.
Decoding options | |
---|---|
:decode-key-fn | true to coerce keys to keywords, false to leave them as strings, or a function to provide custom coercion (default: the default of ->decode-key-fn ) |
:bigdecimals | true to decode doubles as BigDecimals (default: false ) |
See https://metosin.github.io/jsonista for further details of the underlying
JSON library, jsonista
.
Constructs a Jackson `ObjectMapper`. With no arguments, the returned object mapper encodes and decodes keys exactly as provided, does not produce pretty JSON and includes no additional modules. The optional first parameter is a map of options. The following options are supported: | Mapper options | | | ------------------- | -------------------------------- | | `:modules` | vector of `ObjectMapper` modules | | Encoding options | | | ------------------- | --------------------------------------------------- | | `:pretty` | set to `true` use Jackson's pretty-printing defaults (default: `true`) | | `:escape-non-ascii` | set to `true` to escape non-ASCII characters | | `:date-format` | string for custom date formatting (default: `yyyy-MM-dd'T'HH:mm:ss'Z'`) | | `:encode-key-fn` | `true` to coerce keyword keys to strings, `false` to leave them as keywords, or a function to provide custom coercion (default: the default of [[->encode-key-fn]]) | | `:encoders` | a map of custom encoders where keys should be types and values should be encoder functions | Encoder functions take two parameters: the value to be encoded and a `JsonGenerator` object. The function should call `JsonGenerator` methods to emit the desired JSON. | Decoding options | | | ------------------- | --------------------------------------------------- | | `:decode-key-fn` | `true` to coerce keys to keywords, false to leave them as strings, or a function to provide custom coercion (default: the default of [[->decode-key-fn]]) | | `:bigdecimals` | `true` to decode doubles as BigDecimals (default: `false`) | See https://metosin.github.io/jsonista for further details of the underlying JSON library, `jsonista`.
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close