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
trueifalse, - 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.jsonw 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()iJSON.stringify(), - Python – moduł
json, - Java – biblioteki
Jackson,Gson, - C++ –
nlohmann/json, - PHP – funkcje
json_encodeijson_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"]
}