JavaScript Object Notation, no JavaScript required
JSON was specified by Douglas Crockford in the early 2000s and standardized as RFC 8259 in 2017. It started as a subset of JavaScript object literal syntax but is now a language-agnostic data interchange format with parsers in every language that exists.
Where you already use JSON
- HTTP APIs — REST responses, GraphQL queries and responses, webhooks.
- Package manifests —
package.json(npm),composer.json(PHP),tsconfig.json,.eslintrc.json. - Editor & tool config — VS Code settings, GitHub Actions outputs, Postman collections, Stripe webhooks.
- Data dumps — Firebase exports, MongoDB documents, log records.
- Inter-process messages — JSON-RPC, MCP, websocket frames.
Why JSON keeps winning
Three reasons. Strict — there is one way to write each value, so two implementations always agree. Minimal — six data types, six syntax rules, no surprises. Universal — every modern language has a built-in or stdlib parser, no third-party install required.
Principle: JSON is a wire format, not a programming notation. It has no comments, no functions, no
undefined — and that is the feature, not the bug. Anything richer (dates, regexes, tagged enums) is a layered convention on top of JSON.