TOON-formaat spiekbriefje
Als je ooit het gevoel hebt gehad dat JSON te uitgebreid is (al die accolades!) maar YAML een beetje te "magisch" en onvoorspelbaar is, word je misschien wel verliefd op TOON. Dit formaat biedt een uniek evenwicht tussen menselijke leesbaarheid en machinale parseersnelheid. Het is ontworpen om compact, expliciet en ongelooflijk snel te analyseren te zijn.
Of u nu gegevens migreert of gewoon een configuratiebestand probeert te debuggen, dit spiekbriefje behandelt de essentiële syntaxis die u moet kennen.
De filosofie: minder ruis, meer data
Het eerste dat opvalt is dat TOON veel op YAML lijkt, maar zich strikt als JSON gedraagt. Het laat de openings- en sluitingsaccolade achterwege ten gunste van inspringing en nieuwe regels, waardoor uw gegevens er onmiddellijk schoner uitzien.
Objecten en nesten
In JSON ben je gewend om alles tussen accolades te plaatsen. In TOON wordt de structuur geïmpliceerd door inspringing.
JSON:
{
"project": {
"metagegevens": {
"name": "Alpha-Centauri",
"status": "actief"
},
"mijlpalen": [
{
"fase": "ontwerp",
"prioriteit": 1
},
{
"fase": "testen",
"prioriteit": 2
}
]
}
}
TOON:
project:
metagegevens:
naam: Alpha-Centauri
status: actief
mijlpalen[2]{fase,prioriteit}:
ontwerp, 1
testen, 2
Merk op dat voor sleutels geen aanhalingstekens nodig zijn, tenzij ze speciale tekens bevatten, en dat de hiërarchie visueel duidelijk is.
De kracht van arrays
Hierin wijkt TOON echt af van andere formats. TOON vereist dat je de lengte van de array in de sleutel zelf declareert. Dit lijkt in eerste instantie misschien vreemd, maar het stelt de parser in staat geheugen vooraf toe te wijzen, waardoor het razendsnel wordt.
Primitieve arrays
Voor eenvoudige lijsten met tekenreeksen of getallen gebruikt TOON een compacte, door komma's gescheiden syntaxis.
De syntaxis:
sleutel[lengte]:item1,item2,item3
Als je een rootarray hebt (het hele bestand is slechts een lijst), ziet het er als volgt uit:
Tabellarrays (de killer-functie)
Dit is de functie die ontwikkelaars meestal overtuigt. Als u een array met objecten heeft die allemaal dezelfde sleutels delen (zoals rijen in een database), kunt u met TOON het schema once in de header definiëren en vervolgens alleen de waarden vermelden. Hiermee worden enorme hoeveelheden redundantie in JSON verwijderd.
De syntaxis:
sleutel[rijen]{col1,col2}:
JSON:
{
"inventaris": [
{
"sku": "KB-99",
"aantal": 50,
"gangpad": 4,
"opnieuw ordenen": false
},
{
"sku": "MS-12",
"aantal": 12,
"gangpad": 7,
"opnieuw ordenen": waar
},
{
"sku": "MN-44",
"aantal": 8,
"gangpad": 2,
"opnieuw ordenen": waar
}
]
}
TOON:
inventaris[3]{sku, aantal, gangpad, opnieuw ordenen}:
KB-99,50,4,onwaar
MS-12,12,7, waar
MN-44,8,2, waar
Deze "CSV-inside-YAML"-aanpak maakt grote datasets ongelooflijk leesbaar en compact.
Gemengde en geneste arrays
Soms zijn gegevens niet uniform. Als uw array verschillende soorten gegevens bevat (getallen gemengd met objecten), of als deze complexe geneste objecten bevat, valt TOON terug op een syntaxis in opsommingstekens met behulp van koppeltekens.
Je kunt zelfs arrays in arrays hebben. Merk op hoe de binnenste array ook zijn lengte declareert:
Citeren: wanneer moet je het gebruiken
Eén van de leukste dingen van TOON is dat je zelden offertes nodig hebt. Je kunt 'Hallo 世界 👋' schrijven zonder het in '""` te plaatsen. Omdat TOON echter typen probeert af te leiden (getallen, booleans), zijn er specifieke regels voor wanneer u aanhalingstekens moet gebruiken.
De lijst met "must-quotes".
U moet uw string tussen dubbele aanhalingstekens "" plaatsen als:
- Het ziet eruit als een getal of een Booleaanse waarde: Als je de string
"123"of"true"wilt, citeer deze dan. Anders worden ze het getal '123' en de booleaanse waarde 'true'.
- Het bevat scheidingstekens: Als uw tekenreeks een komma
,bevat (of wat uw actieve scheidingsteken ook is), citeer deze dan.
- Het heeft witruimteranden: Voor- of achterspaties zijn aanhalingstekens nodig.
- Het bevat speciale tekens: Tekens zoals
:,",\,[,],{,}.
- Het is leeg: Een lege string wordt weergegeven als
"".
Voorbeelden:
Ontsnappingssequenties
Houd het simpel. TOON herkent slechts vijf ontsnappingssequenties binnen strings. Al het andere is ongeldig.
\\(Backslash)
\"(dubbele aanhalingstekens)
\n(Nieuwe regel)
\r(Retourvervoer)
\t(Tabblad)
Geavanceerde kopteksten en scheidingstekens
Wat als uw gegevens vol komma's staan? Je wilt niet elk veld citeren. Met TOON kunt u het scheidingsteken in de arrayheader wijzigen.
U kunt een Tab of een Pipe (|) gebruiken door deze tussen de beugels of beugels te plaatsen.
Voorbeeld van pijpscheidingsteken:
Door | in de header toe te voegen, weet de parser naar leidingen te zoeken in plaats van naar komma's, waardoor uw syntaxis schoon blijft.
Sleutel vouwen
Als u diep nestelt, maar slechts één gegevenspad heeft, hoeft u niet vijf keer in te springen. U kunt puntnotatie (Key Folding) gebruiken om uw structuur platter te maken.
Standaard nesting:
gebruiker:
profiel:
instellingen:
meldingen:
e-mail: waar
sms: vals
Gevouwen (reiniger):
user.profile.settings.meldingen:
e-mail: waar
sms: vals
Snelle typereferentie
TOON wijst rechtstreeks toe op JSON-typen, maar verwerkt JavaScript-specifieke edge-cases netjes om geldige uitvoer te garanderen.
- Getallen: Opgeslagen als canonieke decimalen.
1.0wordt1.
- Infinity / NaN: Deze worden
null(aangezien JSON ze niet ondersteunt).
- Data: geconverteerd naar ISO-tekenreeksen tussen aanhalingstekens.
- Ongedefinieerd/Functies: Geconverteerd naar
null.
- Lege objecten: Weergegeven als niets (lege uitvoer).
- Lege arrays: Weergegeven als
key[0]:.
TOON is een format dat precisie beloont. Het kan even duren voordat u gewend bent aan het tellen van uw array-items, maar de winst in leesbaarheid en bestandsgrootte is de moeite zeker waard. Veel codeerplezier!