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, this module 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, this module 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>
json-to-xml
($json as json-item()?) as element(*,xs:untyped)?
Converts JSON data into an XDM instance using the Snelson representation described above. |
json-to-xml
($json as json-item()?, $options as object()) as element(*,xs:untyped)?
Converts JSON data into an XDM instance using one of the representations described above. |
xml-to-json
($xml as item()*) as json-item()*
Converts XML data into a JSON item using the Snelson representation described above. |
xml-to-json
($xml as item()*, $options as object()) as json-item()*
Converts XML data into a JSON item using one of the respresentations described above. |
declare function jx:json-to-xml($json as json-item()?) as element(*,xs:untyped)?
declare function jx:json-to-xml($json as json-item()?, $options as object()) as element(*,xs:untyped)?
{ "json-format" : "JsonML-array" }
declare function jx:xml-to-json($xml as item()*) as json-item()*
declare function jx:xml-to-json($xml as item()*, $options as object()) as json-item()*
{ "json-format" : "JsonML-array" }