Logo de JMGHStudios. Enlace a la portada del sitioLogo de JMGHStudios. Enlace a la portada del sitio

TOON Cheatsheet

Token-Oriented Object Notation, es un formato compacto pensado para reducir el consumo de tokens al trabajar con LLMs.
En comparación con JSON, utilizar TOON puede ahorrar entre un 30% y un 60% de tokens, lo que supone un ahorro enorme a la hora de tratar con modelos de Inteligencia Artificial Generativa de pago.

1. Conceptos básicos

TOON elimina llaves y comillas en muchas ocasiones, utiliza indentación para anidar y un esquema tabular para arrays homogéneos. Su potencia aparece cuando trabajas con arrays de objetos que comparten las mismas claves: declaras el esquema una vez y listan filas de valores.

Reglas rápidas:
  • Clave y valor: key: value
  • Anidación: indentación (dos espacios recomendados)
  • Arrays simples: name[N]: seguido de N líneas
  • Arrays de objetos homogéneos: arr[N]{k1,k2}: seguido de N filas con valores separados por comas
Cuando NO usar TOON:
  • Cuando los objetos del array tienen claves distintas.
  • Estructuras extremadamente heterogéneas o arbitrarias.
  • Si necesitas compatibilidad inmediata con APIs que aceptan sólo JSON.

2. Tipos de datos

JSON vs TOON: la semántica es la misma. Ejemplos:

JSON
{
  "active": true,
  "count": 42,
  "nickname": null,
  "name": "Ana"
}
TOON
active: true
count: 42
nickname: null
name: Ana

3. Arrays simples

TOON declara la longitud del array: key[N]:. Útil para que el lector (o LLM) sepa cuántos elementos vienen.

JSON
{
  "colors": ["red", "green", "blue"]
}
TOON
colors[3]:
  red
  green
  blue
Array vacío
JSON
{
  "items": []
}
TOON
items[0]:

4. Arrays de objetos

En arrays homogéneos (todos los objetos comparten la misma estructura), TOON evita repetir claves: declaras el esquema y luego las filas de valores.

JSON
{
  "users": [
    { "id": 1, "name": "Alice", "role": "admin" },
    { "id": 2, "name": "Bob", "role": "user" }
  ]
}
TOON
users[2]{id,name,role}:
  1,Alice,admin
  2,Bob,user

Notas:

  • [2] indica que hay 2 elementos.
  • {id,name,role} es el esquema: todas las filas siguen ese orden.
  • Las filas usan , como separador — no hace falta repetir las claves.
Ejemplo con más columnas (tipo tabla)
JSON
{
  "products": [
    { "id": 1, "name": "Tomato", "price": 1.2 },
    { "id": 2, "name": "Onion", "price": 0.8 },
    { "id": 3, "name": "Bread", "price": 1.5 }
  ]
}
TOON
products[3]{id,name,price}:
  1,Tomato,1.2
  2,Onion,0.8
  3,Bread,1.5

5. Anidación y objetos anidados

Si un campo del esquema es un objeto, puedes abrir una indentación después del valor y representar su contenido normalmente.

JSON
{
  "orders": [
    {
      "id": 10,
      "items": [
        { "sku": "A1", "qty": 2 },
        { "sku": "B9", "qty": 1 }
      ]
    }
  ]
}
TOON
orders[1]{id,items}:
  10:
    items[2]{sku,qty}:
      A1,2
      B9,1

Observación: cuando un valor del esquema es a su vez un objeto/array, pon el nombre de ese campo, dos puntos y abre indentación. Puedes mezclar el formato tabular con objetos anidados.

Ejemplo: objetos con metadatos
JSON
{
  "products": [
    { "id": 1, "meta": { "category": "fruit", "price": 1.2 } },
    { "id": 2, "meta": { "category": "veg", "price": 0.8 } }
  ]
}
TOON
products[2]{id,meta}:
  1:
    category: fruit
    price: 1.2
  2:
    category: veg
    price: 0.8

6. Strings especiales y comentarios

Puedes omitir comillas para strings simples. Usa comillas cuando el string contenga comas, dos puntos, llaves o corchetes que puedan confundir el parser.

JSON
{
  "title": "Hello, world!",
  "note": "Value: 10",
  "author": "Anna"
}
TOON
title: "Hello, world!"
note: "Value: 10"
author: Ana

Comentarios
Al contrario que en JSON, en TOON podemos utilizar comendatios utilizando la almohadilla (#)

# Esto es un comentario
user:
  name: Ana # comentario en línea

7. Conversor JSON a TOON