CompactData is a compact data serialisation format
JSON
{"data":{"is":["v","e","r","b","o","s","e"]}}
CompactData
data(is[c;o;m;p;a;c;t])

Introduction

           
Page Detail
This webpage uses StretchText – an original hypertext feature from the 1960s, used to expand the detail of certain passages of text to aid understanding. You can set the level of detail for all passages of text on this page by using the zoom options on the right. You can zoom into individual passages of text too. Read more about StretchText.

CompactData is a compact data serialisation format. It is well suited to use cases where efficient data storage and transport is a priority.

CompactData is a data serialisation format (like JSON and YAML). CompactData prioritises efficiency of data above all else and is well suited to projects where efficient data storage and transport is a priority.

CompactData is a way to store and transmit data objects using human-readable text – a process known as data serialisation. Other well-known data serialisation formats are JSON and YAML. In comparison to JSON and YAML, CompactData is a more efficient way to store and transmit serialised data. For this reason, CompactData is a good choice for projects where efficiency is a high priority.

Similarities with JSON

Like JSON and most other data serialisation formats, CompactData is made up of:

  • values like a, 1, true, false, null
  • pairs consisting of a key and value
  • maps containing pairs
  • arrays containing values

Subtle differences to JSON

CompactData has the following subtle differences when compared to JSON:

  • CompactData uses an equals (=) to split a key and value, whereas JSON uses a colon (:)
  • CompactData uses a semi-colon (;) as a separator, whereas JSON uses a comma (,)
  • It is not necessary to quote keys or values – types are inferred
  • Values can be quoted using `back ticks` as well as "quotes"

Significant differences to JSON

CompactData has the following significant differences when compared to JSON, in the pursuit of efficiency:

  • It is not necessary to split a key and value with = if the value is a map or an array, e.g: colours[red;blue], colours=[red;blue], person=(name=Alice) and person(name=Alice) are all valid
  • Pairs can be expressed outside of a map at the top level, where they are considered pairs in the same map
  • Pairs can be expressed as values in an array, where each pair is considered an individual map with a single pair

Learn More

To experiment with CompactData use the Playground, to use CompactData in your own project take a look at the Developer Libraries. For detailed information read the Technical Specification.