Przewodnik JSON: skladnia, typy danych, parsowanie, walidacja, JSON Schema i dobre praktyki

Kompletny przewodnik JSON: po co istnieje standard, jak poprawnie parsowac dane, walidowac strukture i unikac typowych bledow.

Czym jest JSON i dlaczego stal sie standardem

JSON (JavaScript Object Notation) to lekki format wymiany danych oparty na tekscie i czytelnej strukturze.

Stal sie standardem, bo jest prosty do odczytu dla ludzi, latwy do przetwarzania przez maszyny i dostepny praktycznie w kazdym jezyku programowania.

Specyfikacja formalna jest opisana w RFC 8259 i ECMA-404.

Po co JSON i jakie problemy rozwiazuje

  • Standaryzuje wymiane danych miedzy frontendem, backendem i uslugami zewnetrznymi.
  • Upraszcza integracje API dzieki przewidywalnej strukturze klucz-wartosc.
  • Dobrze wspolgra z HTTP, kolejkami, logowaniem zdarzen i konfiguracja aplikacji.

Typy danych i zasady skladni JSON

Type Znaczenie Przyklad Uwaga
Object Kolekcja par klucz-wartosc. {"name":"Alex","age":31} Klucze musza byc napisami w podwojnych cudzyslowach.
Array Uporzadkowana lista wartosci. ["api","json",2026] Elementy moga miec rozne typy, ale wartosci powinny byc spójne semantycznie.
String Ciag znakow UTF-8. "hello" JSON nie pozwala na pojedyncze cudzyslowy.
Number Liczba calkowita lub zmiennoprzecinkowa. 42, -3.14, 1.2e6 Brak NaN i Infinity w standardowym JSON.
Boolean Wartosc logiczna. true / false Tylko male litery.
Null Jawny brak wartosci. null Rozni sie od braku pola w obiekcie.

Modelowanie obiektow i tablic

Dobry model JSON to przede wszystkim stabilne nazewnictwo i przewidywalne typy pol. Lepiej trzymac stale znaczenie kluczy niz dynamicznie zmieniac ich semantyke.

  • Nazewnictwo kluczy trzymaj konsekwentnie (np. snake_case albo camelCase).
  • Jesli pole bywa puste, jasno zdefiniuj czy oznacza to null, pusty string, czy brak pola.
  • Unikaj nadmiernego zagniezdzania, bo utrudnia walidacje i debugowanie.

Parsowanie i walidacja: poprawny przeplyw

  1. Najpierw parsuj surowy tekst JSON i obsluz blad skladni.
  2. Nastepnie sprawdz kontrakt (JSON Schema lub walidatory domenowe).
  3. Dopiero po walidacji wykonuj logike biznesowa i operacje na bazie.
  4. Na koncu serializuj odpowiedz JSON kontrolujac status i format bledow.

UTF-8, escape i kodowanie znakow

Standardowo JSON jest kodowany jako UTF-8, dlatego wartosci tekstowe moga zawierac znaki narodowe i emoji.

Zawsze testuj escaping sekwencji takich jak \", \n i \uXXXX, szczegolnie przy danych z wielu systemow.

Liczby, null i inne pulapki interoperacyjnosci

  • Duze liczby calkowite moga tracic precyzje w JavaScript; dla identyfikatorow rozwaz string.
  • null to swiadoma wartosc, a brak pola to inna semantyka API.
  • Nie kazdy parser identycznie obsluguje skrajne przypadki liczb zmiennoprzecinkowych.

JSON Schema jako kontrakt danych

JSON Schema formalizuje kontrakt danych miedzy nadawca i odbiorca. Redukuje bledy integracyjne i ulatwia testy automatyczne.

Keyword Rola Praktyka
type Okresla oczekiwany typ danych. Wymuszaj obiekt na root i typy pol krytycznych.
required Lista pol obowiazkowych. Uzywaj dla pol, bez ktorych logika biznesowa nie dziala poprawnie.
additionalProperties Kontroluje, czy nieznane pola sa dozwolone. Ustawiaj false dla zamknietych kontraktow API.
enum Ogranicza wartosc do ustalonej listy. Dobre dla statusow i flag domenowych.
minLength/maxLength Limity dlugosci napisow. Chroni przed pustymi i nadmiernie dlugimi danymi.

Wydajnosc i rozmiar payloadu

Obszar Efekt Rekomendacja
Minifikacja Mniejszy payload i szybszy transfer. Stosuj na wyjsciu API, a pretty print zostaw do debugowania.
Kompresja HTTP (gzip/br) Znaczace zmniejszenie transferu dla wiekszych JSON. Wlacz kompresje po stronie reverse proxy lub aplikacji.
Paginated responses Mniejszy jednorazowy koszt parsowania. Nie zwracaj ogromnych tablic bez stronicowania.
Stabilna struktura Mniej bledow i prostszy cache klienta. Unikaj chaotycznych zmian nazw i typow pol.

Bezpieczenstwo danych JSON

  • Nigdy nie uruchamiaj JSON przez eval; zawsze uzywaj parsera.
  • Waliduj dane wejsciowe przed logika biznesowa oraz przed zapisem do bazy.
  • Nie ufaj polom typu role/isAdmin bez autoryzacji po stronie serwera.
  • Ogranicz maksymalny rozmiar body, aby unikac atakow na zasoby.
  • Chron endpointy przed nadmiarem zagniezdzen i ekstremalnie duzymi tablicami.

Snippety JSON: JavaScript i PHP

Ponizej ten sam scenariusz: parse + walidacja kontraktu + serializacja odpowiedzi.

JavaScript (JSON.parse + ajv)

PHP (json_decode + opis/json-schema)

Praktyczny workflow w ToolsStacker

W ToolsStacker mozesz przejsc pelna diagnostyke JSON od skladni po kontrakt:

Szybka checklista implementacyjna

  • Parsuj tylko przez oficjalne API jezyka (JSON.parse, json_decode).
  • Uzywaj try/catch lub wyjatkow parsera i zwracaj jasne bledy klientowi.
  • Ustal kontrakt danych przez JSON Schema dla payloadow krytycznych.
  • Wymuszaj UTF-8 i testuj przypadki znakow specjalnych.
  • Miej limity rozmiaru requestu i monitoruj bledne payloady.
  • Trzymaj wersjonowanie API, gdy zmieniasz semantyke pol.

Specyfikacje: RFC 8259, ECMA-404, JSON Schema.