http://www.zorba-xquery.com/modules/converters/json ZC

Module Description
Before using any of the functions below please remember to import the module namespace:
import module namespace json = "http://www.zorba-xquery.com/modules/converters/json";

Using this module, you can parse JSON data into XML, manipulate it like any other XML data using XQuery, and serialize the result back as JSON. There are many ways to represent JSON data in XML, some loss-less ("round tripable") and some lossy ("one way"). Loss-less representations preserve the JSON data types boolean, number, and null; lossy representations convert all data to strings.

For a loss-less representation, Zorba implements that proposed by John Snelson. For example:
   {
     "firstName" : "John",
     "lastName" : "Smith",
     "address" : {
       "streetAddress" : "21 2nd Street",
       "city" : "New York",
       "state" : "NY",
       "postalCode" : 10021
     },
     "phoneNumbers" : [ "212 732-1234", "646 123-4567" ]
   }
 
would be represented as:
   <json type="object">
     <pair name="firstName" type="string">John</pair>
     <pair name="lastName" type="string">Smith</pair>
     <pair name="address" type="object">
       <pair name="streetAddress" type="string">21 2nd Street</pair>
       <pair name="city" type="string">New York</pair>
       <pair name="state" type="string">NY</pair>
       <pair name="postalCode" type="number">10021</pair>
     </pair>
     <pair name="phoneNumbers" type="array">
       <item type="string">212 732-1234</item>
       <item type="string">646 123-4567</item>
     </pair>
   </json>
 
For a lossy representation, Zorba implements JsonML (the array form). For example:
   [ "person",
     { "created" : "2006-11-11T19:23",
       "modified" : "2006-12-31T23:59" },
     [ "firstName", "Robert" ],
     [ "lastName", "Smith" ],
     [ "address",
       { "type" : "home" },
       [ "street", "12345 Sixth Ave" ],
       [ "city", "Anytown" ],
       [ "state", "CA" ],
       [ "postalCode", "98765-4321" ]
     ]
   ]
 
would be represented as:
   <person created="2006-11-11T19:23" modified="2006-12-31T23:59">
     <firstName>Robert</firstName>
     <lastName>Smith</lastName>
     <address type="home">
       <street>12345 Sixth Ave</street>
       <city>Anytown</city>
       <state>CA</state>
       <postalCode>98765-4321</postalCode>
     </address>
   </person>
 

Author:

Paul J. Lucas

XQuery version and encoding for this module:

xquery version "3.0" encoding "utf-8";

Zorba version for this module:

The latest version of this module is 2.0. For more information about module versioning in Zorba please check out this resource.

Module Resources
Module Dependencies

Imported modules:

Imported schemas:

Please note that the schemas are not automatically imported in the modules that import this module.
In order to import and use the schemas, please add:

import schema namespace json-options =  "http://www.zorba-xquery.com/modules/converters/json-options";

Namespaces
an http://www.zorba-xquery.com/annotations
err http://www.w3.org/2005/xqt-errors
json http://www.zorba-xquery.com/modules/converters/json
json-options http://www.zorba-xquery.com/modules/converters/json-options
schema http://www.zorba-xquery.com/modules/schema
ver http://www.zorba-xquery.com/options/versioning
zerr http://www.zorba-xquery.com/errors
Function Summary
parse ( $json as xs:string? ) as element(*,xs:untyped)*
Parses JSON data from a string and returns an XDM instance using the Snelson representation described above.
parse ( $json as xs:string?, $options as element(json-options:options) ) as element(*,xs:untyped)*
Parses JSON data from a string and returns an XDM instance using one of the representations described above.
serialize ( $xml as item()* ) as xs:string
Serializes an XDM into JSON using one of the representations described above.
serialize ( $xml as item()*, $options as element(json-options:options) ) as xs:string
Serializes an XDM into JSON using one of the representations described above.
Functions
parse back to 'Function Summary'
declare function json:parse (
            $json as xs:string?
) as element(*,xs:untyped)*

Parses JSON data from a string and returns an XDM instance using the Snelson representation described above.

Parameters:
Returns:
Errors:
Examples:

parse back to 'Function Summary'
declare function json:parse (
            $json as xs:string?,
            $options as element(json-options:options)
) as element(*,xs:untyped)*

Parses JSON data from a string and returns an XDM instance using one of the representations described above.

Parameters:
Returns:
Errors:
Examples:

serialize back to 'Function Summary'
declare function json:serialize (
            $xml as item()*
) as xs:string

Serializes an XDM into JSON using one of the representations described above.

Parameters:
Returns:
Errors:
Examples:

serialize back to 'Function Summary'
declare function json:serialize (
            $xml as item()*,
            $options as element(json-options:options)
) as xs:string

Serializes an XDM into JSON using one of the representations described above.

Parameters:
Returns:
Errors:
Examples:

blog comments powered by Disqus