JSON—JavaScript Object Notation—to wszechobecny, tekstowy format do wymiany danych strukturalnych. Jest on standaryzowany zarówno przez IETF jako RFC 8259 , jak i przez Ecma International jako ECMA-404, które razem definiują zwartą, niezależną od języka składnię, która napędza nowoczesne interfejsy API, logi, konfiguracje i bazy danych.
Wartość JSON to obiekt, tablica, ciąg znaków, liczba lub jeden z literałów true, false lub null; obiekty mapują ciągi znaków na wartości, a tablice przechowują uporządkowane wartości—z nieznaczącym białym znakiem dozwolonym wokół znaków strukturalnych (RFC 8259, ECMA-404). Chociaż JSON wywodzi się z JavaScriptu, jest niezależny od języka i obsługiwany praktycznie wszędzie (MDN: JSON). W transmisji danych de facto i zalecanym kodowaniem jest UTF-8 (RFC 8259 §8.1). Dla dodatkowego bezpieczeństwa interoperacyjności, profil I-JSON (RFC 7493) zaostrza zasady dotyczące kodowań i zakresów numerycznych.
W JavaScript globalny obiekt JSON udostępnia dwa podstawowe narzędzia:JSON.parse (z opcjonalnym reviver) oraz JSON.stringify (z replacerem/odstępami do ładnego drukowania), jak udokumentowano na MDN (parse, stringify).
Gramatyka liczb w JSON jest dziesiętna, ale specyfikacja nie narzuca precyzji ani rozróżnienia między liczbami całkowitymi a zmiennoprzecinkowymi. Implementacje wybierają, jak je reprezentować (RFC 8259 §6). W JavaScript i Node.js Number to podwójna precyzja IEEE-754, co oznacza, że tylko liczby całkowite w zakresie [−(2^53−1), 2^53−1] są w pełni bezpieczne—zobacz Number.MAX_SAFE_INTEGER i typ BigInt. Dlatego publiczne interfejsy API często przesyłają identyfikatory jako ciągi znaków i jawnie walidują „bezpieczne liczby całkowite”.
W miarę dojrzewania użycia pojawiły się standardy do adresowania i modyfikowania JSON w miejscu. JSON Pointer (RFC 6901) to niewielka składnia z ukośnikami do lokalizowania wartości (np. /a/b/0) z regułami ucieczki dla ~ i /. JSON Patch (RFC 6902) modeluje częściowe aktualizacje jako uporządkowane operacje (add, remove, replace, move, copy, test) i jest przesyłany jako application/json-patch+json. Dla prostszych różnic, JSON Merge Patch (RFC 7386) używa scalania w kształcie dokumentu: obecne pola są dodawane/zastępowane; ustawienie pola na null usuwa je. Wiele frameworków obsługuje jedną lub obie formy od razu po wyjęciu z pudełka.
Sam JSON jest bezschematowy, ale ekosystemy opierają się na schematach do walidacji, dokumentacji i generowania kodu. Rodzina JSON Schema 2020-12 określa ograniczenia takie jak type, properties, items i słowa kluczowe kompozycji, i jest zgodna z OpenAPI 3.1. Dla przepływów pracy skoncentrowanych na generowaniu kodu, JSON Type Definition (RFC 8927) oferuje celowo mniej wyrazisty język, który przewidywalnie mapuje się na główne systemy typów.
Klasyczny JSON oczekuje jednego kompletnego tekstu na ładunek, co komplikuje strumieniowanie logów i długotrwałe odpowiedzi. Pomagają dwa wzorce:
application/json-seq.Gdy przepustowość lub szybkość dominują, formaty „binarnego JSON” zachowują model danych JSON, zamieniając czytelność dla człowieka na wydajność:
Ponieważ JSON to tylko tekst, większość zagrożeń wynika ze sposobu jego transportu i obsługi:
<script> z wywołaniem zwrotnym) było obejściem przed-CORS dla żądań międzydomenowych, ale jest niebezpieczne—wykonuje dowolny skrypt. Preferuj CORS z prawdziwymi odpowiedziami application/json (OWASP: Nadużycie JSONP).JSON zadebiutował pod RFC 4627 (2006); zarejestrowany typ mediów to application/json, którego specyfikacja wskazuje teraz na RFC 8259. Parametry „charset” w odpowiedziach JSON są generalnie niepotrzebne, ponieważ UTF-8 jest domyślny w publicznym internecie.
Deweloperzy często chcą komentarzy, końcowych przecinków lub ciągów znaków w pojedynczych cudzysłowach w plikach konfiguracyjnych. To wykracza poza standardowy JSON, ale JSON5 zapewnia dobrze udokumentowany nadzbiór dla plików edytowanych przez człowieka. Unikaj wysyłania JSON5 przez publiczne interfejsy API, chyba że kontrolujesz obie strony.
Sukces JSON wynika z małej powierzchni, szerokiego wsparcia językowego i kręgu sąsiednich standardów—wskaźników, łatek, schematów, sekwencji—które obejmują nieuporządkowane realia systemów rozproszonych. Zrozumienie podstaw (składnia, kodowanie, liczby), oparcie się na odpowiednich sąsiednich standardach, a będzie on nadal przynosił dywidendy w różnych stosach i usługach (RFC 8259, ECMA-404, RFC 6901, RFC 6902, RFC 7386, JSON Schema, JTD, RFC 7464, NDJSON).
JSON (JavaScript Object Notation) to lekki format wymiany danych, który jest łatwy do odczytu i pisania dla ludzi oraz łatwy do parsowania i generowania dla maszyn. Jest szeroko stosowany do przesyłania danych w aplikacjach internetowych.
Formatowanie JSON czyni go czytelnym dla człowieka poprzez dodanie odpowiedniego wcięcia i podziałów wierszy. Jest to szczególnie przydatne podczas pracy ze zminimalizowanymi lub skompresowanymi danymi JSON, debugowania lub przeglądania odpowiedzi API.
Walidacja JSON sprawdza, czy ciąg JSON jest zgodny ze specyfikacją JSON. Identyfikuje błędy składniowe, takie jak brakujące przecinki, niezamknięte nawiasy lub niewłaściwe cudzysłowy, pomagając wyłapać błędy wcześnie.
Widok kodu wyświetla sformatowany JSON jako tekst z podświetlaniem składni, podobnie jak wygląda w edytorze kodu. Widok drzewa prezentuje JSON jako interaktywną, zwijalna strukturę, w której możesz rozwijać i zwijać zagnieżdżone obiekty i tablice.
Tak! Całe formatowanie i walidacja JSON odbywa się całkowicie w Twojej przeglądarce. Twoje dane nigdy nie opuszczają Twojego komputera, zapewniając pełną prywatność i bezpieczeństwo.
Tak, możesz przesłać plik JSON za pomocą przycisku 'Otwórz plik'. Narzędzie odczyta plik i natychmiast wyświetli sformatowane wyjście.
Typowe błędy JSON obejmują: brakujące przecinki między parami klucz-wartość, użycie pojedynczych cudzysłowów zamiast podwójnych dla ciągów, końcowe przecinki, niezamknięte nawiasy lub klamry oraz klucze bez cudzysłowów.
Tak, użyj przycisku 'Kopiuj', aby skopiować sformatowany JSON do schowka. Jest to przydatne do wklejenia oczyszczonego JSON do kodu lub dokumentacji.