Introduction

JSON representations for exchange standards are widely used in today’s architectures. In RESTful web services, JSON is often the preferred format for the service response, due to its compactness and ease of use in mobile applications. Other standards used in healthcare, such as HL7-FHIR, support JSON as well as XML, together with other formats such as RDF.

JSON and XML are not 1:1 interoperable, as they are based on different principles. For example, JSON does not have a native mechanism for namespaces (as it wants to remain "lightweight"). Also JSON does not have an equivalent for XML "text content". In JSON, "text content" is treated in the same way as "attribute pairs" of XML.

In order to make XML and JSON representations of the same standard interconvertible without any information loss, a set of principles, usually named "conversion conventions" have been developed and are publicly available. See http://wiki.open311.org/JSON_and_XML_Conversion/

This document explains the principles of the JSON representation, and the conventions used. These are based on the "Flickr conventions" for JSON (https://www.flickr.com/services/api/response.json.html).

Note: The Data Exchange Standards team is still considering the development of a native JSON schema so that JSON files can be checked by a validating JSON parser to test that the file is syntactically valid. 

Main principles

For the ODM JSON implementation, the following main principles apply:

Protocol element in JSON example:

"Protocol": {
    "StudyEventRef": [{
        "Mandatory": "Yes",
        "OrderNumber": 1,
        "StudyEventOID": "BASELINE"
    }]
}

This example  shows the JSON serialization of the XML element Protocol with an array of child StudyEventRef elements. The StudyEventRef element is a JSON object (shown in curly brackets) with values for the Mandatory, OrderNumber, and StudyEventOID attributes. The StudyEventRef element is defined as an array (with brackets) so as many as needed can be included.

Very complex and/or large JSON or XML files my have a single line. Tools for reviewing or hand-authoring of JSON or XML may use line breaks and indentation so that the text is easier to read. Line breaks within Value strings  have meaning and must be represented with \n. Indentation or line breaks can be used outside of quoted value strings but have no meaning.

"ReasonForChange": {"_content": "Investigator typing error"}

and combined with the parent element "AuditRecord":

"AuditRecord": {
    "UserRef": {"UserOID": "USR.001"},
    "LocationRef": {"LocationOID": "LOC.007"},
	"DateTimeStamp": {"_content": "2022-07-03"},     
	"ReasonForChange": {"_content": "Investigator typing error"} 
}
"Description": {
    "TranslatedText": [{
        "lang": "en",
        "_content": "Unique identifier for a study."
    }]
}
{
    "CreationDateTime": "2011-10-24T10:05:00",
    "Description": "JSON test",
    "FileOID": "JSON_Test_2020",
    "FileType": "Snapshot",
    "Granularity": "Metadata",
    "ODMVersion": "2.0",
    "Originator": "MySystem",
    ...
    ...
}