- All Modules
- All Functions
-
www.w3.org
- 2005
- XDM
- store
- introspection
- reflection
- external
-
xqdoc
-
xqdoc
(E)
-
project_xqdoc
- xqdoc2xhtml
-
xqdoc
(E)
- data processing
- expath.org
- www.functx.com
- debugger
- error
- jsoniq.org
- www.zorba-xquery.com
http://jsoniq.org/functions
import module namespace jn = "http://jsoniq.org/functions";
This module provides the functions defined by the JSONiq specification, sections 1.7 (Functions) and 1.10 (Update Primitives). JSONiq extends the XQuery specification to also deal with JSON data natively. See http://jsoniq.org/ for details. This module depends on having the JSONiq feature enabled in Zorba, i.e., Zorba must be compiled with ZORBA_WITH_JSON.
Markos Zaharioudakis, Matthias Brantner, Ghislain Fourny
xquery version "1.0" encoding "utf-8";
The latest version of this module is 1.0. For more information about module versioning in Zorba please check out this resource.
- the XQuery module can be found here.
Imported modules:
err | http://www.w3.org/2005/xqt-errors |
jerr | http://jsoniq.org/errors |
jn | http://jsoniq.org/functions |
js | http://jsoniq.org/types |
schema | http://www.zorba-xquery.com/modules/schema |
ver | http://www.zorba-xquery.com/options/versioning |
![]() |
decode-from-roundtrip
(
$items as item()*
) as item()* This function decodes non-JSON types previously encoded with jn:encode-for-roundtrip. |
![]() |
decode-from-roundtrip
(
$items as item()*,
$options as object()
) as item()* This function decodes non-JSON types previously encoded with jn:encode-for-roundtrip. |
![]() |
encode-for-roundtrip
(
$items as item()*
) as item()* This function recursively encodes non-JSON types in such a way that they can be serialized as JSON while keeping roundtrip capability. |
![]() |
encode-for-roundtrip
(
$items as item()*,
$options as object()
) as item()* This function recursively encodes non-JSON types in such a way that they can be serialized as JSON while keeping roundtrip capability. |
![]() |
flatten
(
$a as array()
) as item()* Recursively "flatten" a JSON Array, by replacing any arrays with their members. |
![]() |
is-null
(
$i as xs:anyAtomicType
) as xs:boolean Tests whether the supplied atomic item is a JSON null. |
![]() |
keys
(
$o as object()
) as xs:string* Returns the names used in the object. |
![]() |
member
(
$a as array(),
$p as xs:integer
) as item()? Returns the member of an Array at the specified position (starting from 1). |
![]() |
members
(
$o as array()
) as item()* Returns the members of an Array. |
![]() |
null
(
) as js:null Returns the JSON null. |
![]() |
object
(
$o as object()*
) as object() This function allows dynamic object construction by merging all its object parameters into a single object with a so-called "simple object union". |
![]() |
parse-json
(
$j as xs:string?
) as json-item()* This function parses a given string as JSON and returns a sequence of Objects or Arrays. |
![]() |
parse-json
(
$j as xs:string?,
$o as object()
) as json-item()* This function parses a given string as JSON and returns a sequence of Objects or Arrays. |
![]() |
project
(
$o as object(),
$names as xs:string*
) as object() Creates an object from the specified pairs of another given object. |
![]() |
size
(
$j as array()
) as xs:integer Returns the size of a JSON Array. |
![]() |
value
(
$o as object(),
$name as xs:string
) as item()? Returns the value of a JSON Pair with a given name within a given JSON object. |
declare function jn:decode-from-roundtrip ( $items as item()* ) as item()*
This function decodes non-JSON types previously encoded with jn:encode-for-roundtrip. Calling this version of the function is equivalent to calling the 2 argument version of the function with the second argument { "prefix" : "Q{http://jsoniq.org/roundtrip}" }
- $items the items to be decoded.
- the decoded items.
declare function jn:decode-from-roundtrip ( $items as item()*, $options as object() ) as item()*
This function decodes non-JSON types previously encoded with jn:encode-for-roundtrip. The $options parameter contains options for the decoding process. Currently the only supported option is "prefix". It specifies the prefix that determines if this function decodes an item. Example: jn:decode-from-roundtrip( { "nan" : { "pre-type" : "xs:double", "pre-value" : "NaN" } }, { "prefix" : "pre-" } ) returns the same instance that would be constructed by { "nan" : xs:double("NaN") } So let $decoded := jn:decode-from-roundtrip( { "nan" : { "pre-type" : "xs:double", "pre-value" : "NaN" } }, { "prefix" : "pre-" } ) let $nan := $decoded("nan") return ($nan instance of xs:double, $nan) returns true NaN
- $items the items to be decoded.
- $options the decoding options.
- the decoded items.
- jerr:JNTY0023 if $options("prefix") is not a string
declare function jn:encode-for-roundtrip ( $items as item()* ) as item()*
This function recursively encodes non-JSON types in such a way that they
can be serialized as JSON while keeping roundtrip capability.
Calling this version of the function is equivalent to calling the
2 argument version of the function with the second argument
{
"prefix" : "Q{http://jsoniq.org/roundtrip}"
"serialization-parameters" :
- $items the items to be encoded.
- the encoded items.
declare function jn:encode-for-roundtrip ( $items as item()*, $options as object() ) as item()*
This function recursively encodes non-JSON types in such a way that they can be serialized as JSON while keeping roundtrip capability. Note: The computations are made with respect to the static context of the caller, so that the schema type definitions are available. Example: jn:encode-for-roundtrip( { "nan" : xs:double("NaN") }, { "prefix" : "pre-" } ) returns { "nan" : { "pre-type" : "xs:double", "pre-value" : "NaN" } }
- $items the items to be encoded.
- $options the encoding options.
- the encoded items.
- jerr:JNTY0023 if $options("prefix") is not a string or
- err:XQDY0027 if $options("serialization-parameters") is not a valid serialization-parameters element
declare function jn:flatten ( $a as array() ) as item()*
Recursively "flatten" a JSON Array, by replacing any arrays with their members. Equivalent to define function jn:flatten($arg as array()) { for $value in jn:values($arg) return if ($value instance of array()) then jn:flatten($value) else $value };
- $a A JSON Array.
- The flattened version of $a.
declare function jn:is-null ( $i as xs:anyAtomicType ) as xs:boolean
Tests whether the supplied atomic item is a JSON null.
- An atomic item.
- true if the item is of type js:null.
declare function jn:keys ( $o as object() ) as xs:string*
Returns the names used in the object. The names will be returned in an implementation-defined order
- $o A JSON Object.
- The names of pairs in the object.
declare function jn:member ( $a as array(), $p as xs:integer ) as item()?
Returns the member of an Array at the specified position (starting from 1). If the position is out of bounds of the array, returns the empty sequence.
- $a A JSON Array.
- $p The position in the array.
- The member at the specified position, or empty sequence.
declare function jn:members ( $o as array() ) as item()*
Returns the members of an Array.
- $a A JSON Array.
- The members of the specified array.
declare function jn:null ( ) as js:null
Returns the JSON null.
- The JSON null.
declare function jn:object ( $o as object()* ) as object()
This function allows dynamic object construction by merging all its object parameters into a single object with a so-called "simple object union". A simple object union creates a new object, the pairs property of which is obtained by accumulating the pairs of all operand objects. An error jerr:JNDY0003 is raised if two pairs with the same name are encountered.
- $o A sequence of objects.
- The simple object union.
- jerr:JNDY0003 if there is a pair collision.
declare function jn:parse-json ( $j as xs:string? ) as json-item()*
This function parses a given string as JSON and returns a sequence of Objects or Arrays. Please note that this function allows to parse sequences of whitespace separated objects and arrays.
- $j A string containing a valid JSON text.
- A sequence of JSON Object or Array item.
- jerr:JNDY0021 if the given string is not valid JSON.
declare function jn:parse-json ( $j as xs:string?, $o as object() ) as json-item()*
This function parses a given string as JSON and returns a sequence of Objects or Arrays.
- $j A string containing a valid JSON text.
- $o A JSON object defining options to configure the parser. Allowed options are
- jsoniq-multiple-top-level-items: allow parsing of sequences of JSON Objects and Arrays (boolean; default: true)
- a sequence of JSON Object or Array item.
- jerr:JNDY0021 if the given string is not valid JSON or if jsoniq-multiple-top-level-items is false and there is additional content after the first JSON Object or Array.
- jerr:JNTY0020 if the value for the option jsoniq-multiple-top-level-items is not of type xs:boolean.
declare function jn:project ( $o as object(), $names as xs:string* ) as object()
Creates an object from the specified pairs of another given object. Specifically, for each name in $names, if the object $o has a pair with that name, then a copy of that pair is included in the new object.
- $o A JSON Object.
- $names The names of the pairs to copy out of $o and insert into the new object
- The new object.
declare function jn:size ( $j as array() ) as xs:integer
Returns the size of a JSON Array. The size of an Array is the number of members contained within it.
- $j A JSON Array.
- The number of items in $j.
declare function jn:value ( $o as object(), $name as xs:string ) as item()?
Returns the value of a JSON Pair with a given name within a given JSON object. If no such pair exists in the object, returns the empty sequence.
- $o A JSON Object.
- $name The name of the pair whose value is to be retrieved
- the value of specified pair within the given object, or the empty sequence.