JSON

Lekki tekstowy format wymiany danych oparty na składni obiektów JavaScript. Powszechnie używany do przesyłania danych między serwerem a przeglądarką.

JSON (JavaScript Object Notation) to lekki, tekstowy format zapisu i wymiany danych. Składnia wzięła się z obiektów JavaScriptu, ale sam format jest niezależny od języka — sparsujesz go w Pythonie, Javie, Go, Rust czy PHP równie dobrze. Dane trzymasz w parach "klucz": wartość, a wartością może być tekst, liczba, wartość logiczna (true/false), null, tablica albo zagnieżdżony obiekt. Standard opisuje RFC 8259 oraz norma ECMA-404.

JSON wygrał z cięższym XML-em, bo jest czytelny dla człowieka i tani dla maszyny. Dziś to domyślny język komunikacji w sieci: gdy front-end pyta API o dane, najczęściej dostaje w odpowiedzi właśnie JSON. Używa go też mnóstwo plików konfiguracyjnych — choćby package.json w projektach Node.js — i bazy NoSQL takie jak MongoDB. Krótko mówiąc, jeśli programujesz cokolwiek związanego z webem, JSON-a spotkasz codziennie.

Jak to wygląda w praktyce

Prosty obiekt opisujący użytkownika:

{ "imie": "Ania", "wiek": 30, "aktywny": true, "jezyki": ["pl", "en"] }

W JavaScripcie zamienisz tekst na obiekt przez JSON.parse(tekst), a obiekt z powrotem na tekst przez JSON.stringify(obiekt). W Pythonie robi to moduł json (json.loads() i json.dumps()). Do oglądania API z terminala świetnie nadaje się curl połączony z jq — np. curl api.example.com/users | jq '.[0].imie' wyciągnie imię pierwszego użytkownika z odpowiedzi.

Częste pułapki

  • Klucze tylko w cudzysłowach — i to podwójnych. { klucz: 1 } albo { 'klucz': 1 } to JavaScript, nie JSON.
  • Brak przecinka na końcu (trailing comma)[1, 2, 3,] wywali parser. To klasyk, który wkurza wszystkich.
  • Brak komentarzy — czysty JSON ich nie obsługuje. Dlatego konfiguracje czasem zapisuje się w JSON5 albo YAML-u.
  • Brak typu daty — daty przesyłasz jako tekst, najczęściej w formacie ISO 8601 ("2026-06-29T10:00:00Z").

Gdy dostajesz błąd parsowania, zwykle winny jest jeden z powyższych drobiazgów — wklej dane do walidatora (np. JSONLint) i znajdziesz literówkę w sekundę.

Pojęcia powiązane: XML, YAML, API REST, JSON Schema (walidacja struktury), serializacja i deserializacja, MongoDB, JSON Web Token (JWT).