Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
toon-format/spec: Official specification for Token-Oriented Object Notation (TOON)

toon-format/spec: Official specification for Token-Oriented Object Notation (TOON)

6 hours ago

TOON Format Specification

SPEC v4.2</a> License: MIT</a>

This repository contains the official specification for Token-Oriented Object Notation (TOON), a line-oriented, indentation-based encoding of the JSON data model. See github.com/toon-format/toon for an overview, rationale, and benchmarks.

Specification

→ Read the full specification (SPEC.md)

Version 4.2, Working Draft.

Serialization Example

Uniform arrays of objects collapse into a tabular form that declares the field list once (§9.3):

TOONJSON
users[2]{id,name}:
  1,Ada
  2,Bob

{
  "users": [
    { "id": 1, "name": "Ada" },
    { "id": 2, "name": "Bob" }
  ]
}

That is one of TOON's four forms. The other three, with worked examples in examples/:

| Form | What it renders | Example | | ---- | --------------- | ------- | | Inline (§9.1) | Primitive arrays, on the header line itself | primitive-arrays.toon | | List (§9.2, §9.4) | Arrays that fit neither inline nor tabular form, one - item per element | mixed-arrays.toon | | Tabular (§9.3) | Arrays of uniform objects, as shown above | tabular-arrays.toon | | Keyed tabular (§9.5) | Objects whose values are uniform objects, as rows that carry their own key | keyed-tabular-objects.toon |

Within tabular form, a uniform nested-object column folds into the header as a nested field group (customer{name,country}) while rows stay flat – see nested-field-groups.toon.

See examples/README.md for the annotated index and SPEC.md Appendix A for more shapes.

Media Type & File Extension

Media type text/toon (provisional, UTF-8), file extension .toon. See §17 of SPEC.md.

Contributing

See CONTRIBUTING.md for how to propose changes and when an RFC is required. For implementation-specific questions or bugs, use the respective implementation repository.

Resources

License

MIT License © 2025-PRESENT Johann Schopplich

Chat with me