Definicja #
JSON (JavaScript Object Notation) to tekstowy format wymiany danych zdefiniowany przez Douglasa Crockforda na początku lat 2000. Mimo nazwy odwołującej się do JavaScriptu, jest formatem niezależnym od języka — obsługiwanym przez praktycznie wszystkie języki programowania.
Typy danych w JSON:
- String — tekst w podwójnych cudzysłowach:
"hello" - Number — liczba całkowita lub zmiennoprzecinkowa:
42,3.14 - Boolean —
truelubfalse - Null —
null - Array — lista wartości:
[1, "two", true] - Object — mapa klucz-wartość:
{"name": "Jan", "age": 30}
JSON wyparł XML jako dominujący format dla REST API ze względu na:
- Mniejszy rozmiar (brak tagów zamykających)
- Natywne wsparcie w JavaScript (
JSON.parse(),JSON.stringify()) - Czytelność i prostotę
Standard jest zdefiniowany w RFC 8259 i ECMA-404. Rozszerzenia: JSON Schema (walidacja), JSON-LD (dane linkowane), BSON (binarny JSON używany w MongoDB), NDJSON (JSON Lines — linia po linii).
Zastosowania #
JSON stosuje się do:
- REST API — przesyłanie danych między klientem (przeglądarka, mobile) a serwerem (format request/response)
- Pliki konfiguracyjne —
package.json(Node.js),appsettings.json(.NET),tsconfig.json,angular.json - NoSQL bazy danych — MongoDB przechowuje dokumenty w BSON (binarny JSON)
- Przechowywanie stanu aplikacji — localStorage w przeglądarkach, pliki stanu Terraform, JSON Web Tokens (JWT)
- Wymiana danych między mikroserwisami i systemami zewnętrznymi (webhooks, eventy)
Ścieżka nauki #
JSON jest formatem niezbędnym dla każdego programisty — nauka podstaw zajmuje godziny.
Zacznij od:
- Składnia JSON — obiekty, tablice, typy danych, cudzysłowy
- Parsowanie i serializacja w wybranym języku:
JSON.parse/stringify(JS),json.loads/dumps(Python),JsonSerializer(C#),ObjectMapper(Java) - Walidacja JSON — sprawdzanie poprawności składniowej online (jsonlint.com)
Następnie poznaj:
- JSON Schema — definiowanie i walidacja struktury dokumentu JSON
- JSONPath — język zapytań do nawigacji po strukturze JSON (analogiczny do XPath)
- JWT (JSON Web Token) — format tokenów uwierzytelniania oparty na JSON
- Obsługa dużych plików JSON — streaming parsers, NDJSON (JSON Lines) dla Big Data
FAQ #
- Czym JSON różni się od XML?
- JSON jest lżejszy i prostszy w odczycie — nie wymaga tagów zamykających. XML jest bardziej rozbudowany (atrybuty, namespace, XSD, XSLT) i dominuje w SOAP i systemach korporacyjnych. JSON jest standardem dla REST API i nowoczesnych aplikacji webowych.
- Czy JSON obsługuje komentarze?
- Standardowy JSON nie obsługuje komentarzy — to celowa decyzja projektowa. Niektóre narzędzia (VS Code, TypeScript) obsługują JSON with Comments (JSONC) jako rozszerzenie, ale nie jest to część standardu.
- Co to jest JWT?
- JWT (JSON Web Token) to kompaktowy, bezpieczny format tokena oparty na JSON, stosowany do uwierzytelniania i wymiany informacji. Składa się z trzech części (header.payload.signature) zakodowanych w Base64URL i podpisanych kryptograficznie.
- Czy JSON ma wady?
- JSON nie obsługuje komentarzy, typów daty/czasu (daty trzeba przechowywać jako string ISO 8601), dużych liczb całkowitych (problem z precyzją float), ani danych binarnych (wymagają Base64). Do zastosowań wymagających tych funkcji używa się BSON, MessagePack lub Protobuf.