Tabular JSON

The Tabular JSON project can perhaps be succinctly summed up as “the protocol that is also a serialization”. The idea was to make it possible to have programs that can be developed independently or written in different languages be able to nevertheless work on the same data structures. In some ways, this is similar to Protobuf or Msgpack.

This diagram illustrates how Tabular JSON facilitates conversion between many
formats.

At the same time, the system should incur minimal additional dependencies. So, whereas with something like Protobuf or Msgpack, you’d need some package to work with those formats, JSON is handled by a plethora of various tools. Most importantly, there’s a module in Python’s standard library, which makes parsing any serialized data as easy as json.load().

This is easier even than that other ubiquitous data format, CSV/TSV, which is non-standardized and generally requires additional special parsing and various hacks to store complex linguistic data.

By contrast, the data one gets from json.load() is intended to be usable as-is, already completely parsed.

I talk about the project in more detail in Roussel (2024).

JSON Schema

There is a JSON schema for validating documents that use this format, available here:

JSON schema for Tabular JSON

Specification

There is also a specification document for Tabular JSON.