Abstract
JavaScript Object Notation (JSON) is an increasingly popular text format
for data exchange. netCDF encapsulates the Common Data Model (CDM) and a
binary format for machine-independent and network-transparent storage of
scientific data and metadata. Previous netCDF-to-JSON translators have
been custom solutions with incomplete features, or based on more complex
formats than the CDM. Here we describe a flexible JSON format that
describes any classic or extended format netCDF dataset. This format,
called NCO-JSON, expresses the richness of the CDM and increases
interoperability between web services and netCDF data. NCO-JSON requires
no reserved keywords and so is completely compatible with all netCDF
datasets. It allows for selectable levels of fidelity to the original
data and metadata. The most concise and human-legible form of NCO-JSON
is also lossy. By design it distinguishes only the three atomic JSON
datatypes (float, string, and int). This suffices for many purposes yet
cannot guarantee bit-for-bit reproducibility of many netCDF datatypes,
especially in round-trip translations. NCO-JSON uses a more complex
object notation to encode the additional type information required to
reproduce netCDF datasets with full fidelity. We present the rules and
design of the NCO-JSON format, show results with real-world datasests,
quantify the space advantages vs. alternate formats (both JSON and XML),
and discuss corner cases and possible extensions.