Wat is het JSON-bestandsformaat?
Bestanden met de extensie .json bevatten gegevens die zijn opgeslagen in platte tekst, met behulp van notatie die is afgeleid van een subset van JavaScript, met UTF-8-codering. De huidige gezaghebbende beschrijving van het formaat is ECMA-404 en IETF RFC 8259 (2017), die de eerdere RFC 4627 verving. Naast andere toepassingen wordt .json veel gebruikt om informatie over netwerken over te dragen en om configuratie, instellingen en geserialiseerde applicatiestatus op te slaan.
Een .json-document kan het volgende bevatten:
- Strings (tekenreeksen),
- Getallen (IEEE 754 double-precision floating-point),
- Booleaanse waarden (
trueenfalse), null,- Arrays van de bovenstaande elementen,
- Objecten (sleutel-waardemappen).
Objecten en arrays kunnen op meerdere niveaus worden genest. Hoewel de syntaxis van .json-bestanden is gebaseerd op JavaScript, worden ze gebruikt binnen applicaties die in vrijwel elke programmeertaal zijn geschreven. In JavaScript worden parsing en serialisatie afgehandeld door de ingebouwde methoden JSON.parse() en JSON.stringify(), beschikbaar sinds ECMAScript 5 - er is geen externe bibliotheek vereist. Het formaat biedt geen ondersteuning voor commentaren. Gerelateerde tekstgebaseerde gegevensformaten zijn onder meer YAML, XML en CSV.
Beveiliging & veiligheid
RISICO: LOWEen JSON-bestand is pure data - het kan geen code bevatten of uitvoeren, dus het openen ervan in een editor is veilig. De risico's zijn informatief: gegevensexports bevatten vaak privégegevens, API-sleutels of sessietokens (plak dergelijke bestanden niet in online viewers en deel ze niet); en voor ontwikkelaars zijn het parsen van niet-vertrouwde JSON met eval() in plaats van JSON.parse(), of te grote bestanden gebruikt voor denial-of-service, klassieke valkuilen. Let op dubbele extensies (.json.exe) bij downloads.
Formaatdetails
in een notendopProgramma's die JSON-bestanden openen
Technische details
diepe specificaties| MIME-type | application/json |
| Tekencodering | UTF-8; RFC 8259 verplicht UTF-8 zonder BOM voor netwerkuitwisseling |
| Bestandssignatuur (magic bytes) | Geen - platte tekst; een geldig document begint met „{” (object) of „[” (array), optioneel voorafgegaan door witruimte |
| Ondersteunde gegevenstypen | string, number, boolean (true/false), null, array, object |
| Getalrepresentatie | IEEE 754 double-precision (64-bit) floating-point; de specificatie definieert geen afzonderlijk integer-type |
| String-codering | Unicode; niet-ASCII-tekens kunnen verschijnen als letterlijke UTF-8 of als \uXXXX escape-reeksen met vier hex-cijfers |
| Ondersteuning voor commentaar | Geen - commentaren zijn expliciet uitgesloten van de JSON-specificatie |
| Witruimte | Onbeduidende witruimte (spatie, tab, CR, LF) is toegestaan tussen twee tokens |
| BOM-afhandeling | RFC 8259 verbiedt expliciet een UTF-8 BOM aan het begin van een JSON-uitwisselingsdocument |
| Uniciteit van object-sleutels | Sleutels binnen een object moeten uniek zijn; RFC 8259 verbiedt duplicaten niet, maar laat het gedrag afhangen van de implementatie |
| Nesting | Onbeperkte recursieve nesting van objecten en arrays; de praktische diepte wordt beperkt door de stackgrootte van de parser |
| Ingebouwde JavaScript-API | JSON.parse() en JSON.stringify() zijn native sinds ECMAScript 5 (2009); geen bibliotheek van derden nodig |
| Interoperabiliteit | Taalonafhankelijk; parsers en serializers bestaan voor vrijwel elke belangrijke programmeertaal |
| Veelvoorkomend gebruik | REST API-payloads, applicatieconfiguratiebestanden, gegevensserialisatie, streaming logregels (JSONL / NDJSON), web-app manifests |
| Uitgebracht | 2001 (json.org); first IETF spec RFC 4627 (2006); current RFC 8259 / ECMA-404 (2017) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | www.rfc-editor.org |
JSON conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over JSON-bestanden.