JSON

json

Description

Examples

Arguments:
VALUES(value-expression{1})

Translates all input values to JSON strings (no transit encoding). The keys of dicts are sorted lexically.
["json", 1]

Returns one string: "1".

["json", "hello"]

Returns one string: "\"hello\"".

["json",
["list", "abc", ["list", 1, 2, 3],
{"b": 2, "a": 1}, ["uri", "http://www.example.org/"],
124.4, 12345]]

Returns a list of strings:

["\"abc\"", "[1, 2, 3]", "{\"a\": 1, \"b\": 2}",
"http://www.example.org/", "124.4", "12345"].

json-transit

Description

Examples

Arguments:
VALUES(value-expression{1})

Translates all input values to transit encoded JSON strings. The keys of dicts are sorted lexically. This function behaves like the json function, except that it transit encodes values.
["json-transit", 1]

Returns one string: "1".

["json-transit", "hello"]

Returns one string: "\"hello\"".

["json-transit",
["list", "abc", ["list", 1, 2, 3],
{"b": 2, "a": 1}, ["uri", "http://www.example.org/"],
124.4, 12345]]

Returns a list of strings:

["\"abc\"", "[1, 2, 3]", "{\"a\": 1, \"b\": 2}",
"~rhttp://www.example.org/", "124.4", "12345"].

json-parse

Description

Examples

Arguments:
FUNCTION(default-value-expression(0|1}
VALUES(value-expression{1})

Parses all input values as JSON strings (no transit decoding).

If no default value expression is given, then invalid values that don’t parse as valid JSON will be silently ignored. If not, the evaluated value from the default expression will be used as a replacement value.
["json-parse", "1"]

Returns one number: 1.

["json-parse", "\"hello\""]

Returns one string: "hello".

["is-uri", ["json-parse",
"\"~rhttp://www.example.org/\""]]

Returns false.

["json-parse", "{\"a\": 1, \"b\": 2}"

Returns a dictionary: {"a": 1, "b": 2}",

["json-parse", "hello"]

Returns null because hello is not a valid JSON string.

["json-parse",
["list", "hello", "123", "null",
"\"abc\"", "\"~rhttp://example.org/\""]]

Returns [123, null, "abc", "~rhttp://example.org/"]. Note that null is a valid JSON expression, so null is included in the result list. Note also that "~rhttp://www.example.org/" is not parsed as a URI since we don’t do transit decoding here.

["json-parse", "no-value", "hello"]

Returns "no-value" because hello is not a valid JSON string.

["json-parse", "no-value", "null"]

Returns null because "null" is a valid JSON string.

json-transit-parse

Description

Examples

Arguments:
FUNCTION(default-value-expression(0|1}
VALUES(value-expression{1})

Parses all input values as transit-encoded JSON strings.

If no default value expression is given, then invalid values that don’t parse as valid JSON will be silently ignored. If not, the evaluated value from the default expression will be used as a replacement value.

This function behaves like the json-parse function, except that it transit decodes values.
["json-transit-parse", "1"]

Returns one number: 1.

["json-transit-parse", "\"hello\""]

Returns one string: "hello".

["is-uri", ["json-transit-parse",
"\"~rhttp://www.example.org/\""]]

Returns true.

["json-transit-parse", "hello"]

Returns null because hello is not a valid JSON string.

["json-transit-parse",
["list", "hello", "123", "null",
"\"abc\"", "\"~rhttp://example.org/\""]]

Returns [123, null, "abc", "~rhttp://example.org/"]. Note that null is a valid JSON expression, so null is included in the result list. Note also that “~rhttp://www.example.org/” is parsed as a URI since we are doing transit decoding.

["json-transit-parse",
"no-value", "~rhttp://example.org/"]

Returns "no-value" because ~rhttp://example.org/ is not a valid JSON string.

["is-uri",
["json-transit-parse",
"no-value", "\"~rhttp://example.org/\""]]

Returns true because "\"~rhttp://example.org/\"" is a valid JSON string and the return value is a URI.