Sustainability of Digital Formats: Planning for Library of Congress Collections

Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact
Format Description Categories >> Browse Alphabetical List

JSON (JavaScript Object Notation)

>> Back
Table of Contents
Format Description Properties Explanation of format description terms

Identification and description Explanation of format description terms

Full name JSON (JavaScript Object Notation); also ECMA-404, JSON Data Interchange Format
Description

JSON is a lightweight, text-based, language-independent data interchange format. It was derived from the Javascript/ECMAScript programming language, but is programming language independent. JSON is considered as a lightweight alternative to XML, as in JSON: The Fat-Free Alternative to XML, a 2006 presentation by JSON's developer, Douglas Crockford. JSON defines a small set of structuring rules for the portable representation of structured data. JSON provides simple notation for expressing objects, collections of name/value pairs, and for arrays, ordered lists of values. By nesting these two basic structures, trees and other complex data structures can be represented.

JSON syntax uses braces (curly brackets: {} ), square brackets ( [] ), colons, and commas to arrange values that are strings (sequences of characters in double quotes) or numbers (expressed as sequences of digits) into the two basic structures.

An object is an unordered set of name/value pairs. An object begins with { (left brace) and ends with } (right brace). Each name is followed by : (colon) and the name/value pairs are separated by , (comma). An array is an ordered collection of values. An array begins with [ (left bracket) and ends with ] (right bracket). Values are separated by , (comma). A value can be a string in double quotes, or a number, or true or false or null, or an object or an array. These structures can be nested.

Although the developer of JSON declared in 2006 that JSON is not a markup language, it is now often treated as such. The generic JSON is used as the basis for specific formats, which specify names and for more specific syntax for values. Examples include GeoJSON and its extension TopoJSON. A schema language has been documented at json-schema-org to support specification and validation of JSON applications.

Production phase An interchange format, typically used during data collection or to transmit selected structured data to a system that will further manipulate the data and/or present it to end users.
Relationship to other formats
    Has subtype GeoJSON, GeoJSON. Has an extension TopoJSON.
    Has subtype Formats for other specific applications where interactive data interchange on the Web is important, not described separately in this resource.

Local use Explanation of format description terms

LC experience or existing holdings

The Library of Congress is accumulating an archive of Twitter posts as part of its collections. This archive, not currently accessible to the public, is in the JSON format.

JSON is available for item displays of many digital items in the Library of Congress collections as presented on the Web. For example, JSON is available for every page generated in the Prints and Photographs Online Catalog and maps found through Collections with Maps. JSON is one of the data serializations provided as an output format from id.loc.gov, a service that makes available as Linked Data standards and vocabularies promulgated by the Library of Congress.

LC preference The Library of Congress Recommended Formats Statement (RFS) includes JSON as a preferred format for geospatial data.

Sustainability factors Explanation of format description terms

Disclosure Openly documented. Developed by David Crockford in 2001. Later specified as RFC 4627 and ECMA-404.
    Documentation RFC 4627, July 2006. Also as ECMA-404: The JSON Data Interchange Format, October 2013.
Adoption

Very widely used in web applications. The Stealthy Ascendancy of JSON, a blog post from 2011, says "Today there are 1262 JSON APIs registered, which means a growth rate of 565% in the past eight months, nearly catching up to XML which currently lists 2162 APIs. At this rate, JSON will likely overtake XML as the preferred format [for web applications] by the end of 2011."

There are JSON libraries or built-in JSON support for many programming languages and systems, including: ActionScript, C, C++, C#, Cold Fusion, Java, Lisp, Perl, Objective-C, OCAML, PHP, Python, Ruby.

ESRI has developed a JSON-based GeoServices REST Specification as a simple API to its GIS Server application to support "client-side development environments with the ArcGIS Web mapping APIs for JavaScript(tm), Flex(tm), Silverlight(R), iOS(R), and Android(tm)." Note that this specification is richer, and enables more functionality than the simple GeoJSON format. This specification is covered by the Open Web Foundation Agreement. "Following the open source model similar to the Creative Commons, the foundation is aimed at building a lightweight framework to help communities deal with the legal requirements necessary to create successful and widely adopted specifications."

    Licensing and patents None associated with the basic format.
Transparency

JSON is based on text using UNICODE and uses a very simple structure. It is easy for humans to read and write and for machines to parse and generate. UTF-8 is most commonly used, but UTF-16 and UTF-32 are also permitted.

Self-documentation

Since JSON objects consist of name/value pairs, the names of fields or variables are expressed explicitly. JSON has no particular mechanism for further explaining the names used in a particular stream or file containing name/value pairs.

External dependencies None
Technical protection considerations None

Quality and functionality factors Explanation of format description terms

Dataset
Normal functionality

JSON is intended for data interchange and does not employ strong data-typing for numbers or have explicit support for dates. All data is represented as text, with numbers being in base 10 as sequences of digits (including the common exponent notation to express very small or very large numbers). JSON is not appropriate for applications requiring binary data. Boolean values true and false are allowed as values. There is minimal support for coding missing data, using the null value.

Support for software interfaces (APIs, etc.) JSON is so simple that support for reading or writing it is integrated into almost every system or programming language used for applications on the Web.
Data documentation (quality, provenance, etc.) There is no support in JSON per se for representing provenance metadata, but quantitative or qualitative assessments of quality or indications of provenance can be transmitted with data for applications that require such assessments.
Beyond normal functionality None.

File type signifiers and format identifiers Explanation of format description terms

Tag Value Note
Filename extension json
 
Internet Media Type application/json
From RFC 4627. The MIME type registered with IANA.
Magic numbers Not found.  Comments welcome.  RFC 4627 indicates n/a for magic number.
Tag Value Note
Internet Media Type text/json
text/javascript
These values are found on occasion according to http://en.wikipedia.org/wiki/JSON#MIME_type.
Pronom PUID fmt/817
See http://www.nationalarchives.gov.uk/PRONOM/fmt/817.
Wikidata Title ID Q2063
See https://www.wikidata.org/wiki/Q2063.

Notes Explanation of format description terms

General JSON is minimalist. From JSON: The Fat-Free Alternative to XML, "JSON has no version number. No revisions to the JSON grammar are anticipated."
History JSON 1.0 was adopted as ECMA-404 in October 2013.

Format specifications Explanation of format description terms


Useful references

URLs


Last Updated: 07/27/2017