encyklopedia.space

JSON

JSON (ang. JavaScript Object Notation) – lekki format wymiany danych oparty na podzbiorze składni języka JavaScript. Służy do przechowywania i przesyłania danych w sposób czytelny zarówno dla ludzi, jak i dla maszyn. Dzięki prostocie i szerokiemu wsparciu w licznych językach programowania stał się de facto standardem w komunikacji pomiędzy aplikacjami webowymi a serwerami.

Historia

Format JSON został opracowany w 1999 roku przez Douglas'a Crockforda jako alternatywa dla takiego formatu jak XML. Pierwsza specyfikacja pojawiła się w publikacji „The JSON Data Interchange Format” w 2001 roku. Od tego czasu format został znormalizowany w ECMA‑404 (2006) oraz w RFC 8259 (2017).

Składnia

JSON opisuje dane w dwóch podstawowych strukturach:

  • Obiekt – nieuporządkowany zestaw par klucz–wartość zapisany w nawiasach klamrowych: { "klucz": "wartość" }.
  • Tablica – uporządkowany zbiór wartości zapisany w nawiasach kwadratowych: [1, 2, 3].

Dostępne typy danych to:

  • liczby (całkowite i zmiennoprzecinkowe),
  • napisy (ciągi znaków) otoczone podwójnymi cudzysłowami,
  • wartość logiczna true i false,
  • wartość null,
  • obiekty i tablice (rekurencyjnie).

Zastosowanie

JSON jest wykorzystywany w wielu dziedzinach, m.in.:

  • komunikacja w architekturze REST i GraphQL,
  • interfejsy AJAX w aplikacjach webowych,
  • przechowywanie konfiguracji (np. pliki package.json w ekosystemie Node.js),
  • przesyłanie danych w aplikacjach mobilnych i desktopowych,
  • logi i wymiana komunikatów pomiędzy mikroserwisami.

Implementacje i biblioteki

Większość współczesnych języków programowania udostępnia wbudowane lub zewnętrzne biblioteki do parsowania i generowania JSON:

  • JavaScript – JSON.parse() i JSON.stringify(),
  • Python – moduł json,
  • Java – biblioteki Jackson, Gson,
  • C++ – nlohmann/json,
  • PHP – funkcje json_encode i json_decode.

Typ MIME

Standardowy typ MIME dla dokumentów JSON to application/json. W niektórych przypadkach, szczególnie przy użyciu JSONP, stosuje się application/javascript.

Bezpieczeństwo

Choć JSON jest prosty, nie należy mylić go z możliwością wykonywania kodu. Niebezpieczne mogą być natomiast:

  • tzw. JSON hijacking – ataki polegające na nieuprawnionym odczycie danych JSON w przeglądarce,
  • brak weryfikacji danych przed ich deserializacją, co może prowadzić do injection w niektórych językach.

Zaleca się używanie odpowiednich nagłówków CORS, ograniczanie metod HTTP oraz walidację schematów JSON (np. JSON Schema).

Porównanie z innymi formatami

Cecha JSON XML YAML
Syntaktyka Prosta, oparta na JavaScript Rozbudowana, znacznie bardziej werbalna Najbardziej przyjazna dla człowieka
Rozmiar Mniejszy Większy z powodu znaczników Podobny do JSON, ale z dodatkowymi funkcjami
Wsparcie w językach Wszechobecne Również szerokie, ale wymaga dodatkowych parserów Dobre, ale nie tak rozpowszechnione jak JSON

Przykład

{
    "imie": "Jan",
    "nazwisko": "Kowalski",
    "wiek": 30,
    "aktywny": true,
    "adres": {
        "ulica": "Ulica Kwiatowa 12",
        "miasto": "Warszawa",
        "kod_pocztowy": "00-001"
    },
    "zainteresowania": ["programowanie", "muzyka", "sport"]
}

Zobacz także