Historia formatera JSON
JSON to dziś format, którym posługuje się większość webowych API, a jednak nie zaprojektowała go żadna komisja. Raczej go zauważono, niż wynaleziono: to mały podzbiór JavaScriptu, który okazał się wystarczający do przesyłania danych między programami.
Format odkryty
Około 2001 roku Douglas Crockford i jego koledzy ze State Software szukali sposobu, by przeglądarka i serwer wymieniały dane bez wtyczek. Użyli literałów obiektów i tablic, które JavaScript już rozumiał, nadali pomysłowi nazwę i opublikowali gramatykę na json.org, słynną z tego, że mieści się na odwrocie wizytówki.
Dlaczego nie ma komentarzy
Wcześnie Crockford usunął komentarze z JSON, bo ludzie zaczęli umieszczać w nich polecenia dla parsera, co zniszczyłoby zgodność. Radził usuwać komentarze minifikatorem przed parsowaniem. Dlatego formater zgłasza komentarz jako nieoczekiwany znak i dlatego dla plików konfiguracyjnych powstały formaty takie jak JSON5 i JSONC.
Od strony internetowej do normy
JSON po raz pierwszy opisano w RFC 4627 w 2006 roku. Ecma wydała ECMA-404 w 2013 roku, a IETF zastąpiła starsze teksty dokumentem RFC 8259 w 2017 roku, który wymaga UTF-8 dla JSON wymienianego między systemami. Gramatyka prawie się nie zmieniła od czasów json.org: obiekty, tablice, teksty, liczby, true, false i null.
Liczby i ścieżki
Sam JSON nie ogranicza liczb, ale większość parserów zapisuje je jako 64-bitowe liczby zmiennoprzecinkowe, więc liczby całkowite powyżej 9007199254740991 mogą po cichu stracić precyzję. Duże identyfikatory często wysyła się więc jako tekst. Do wskazywania wartości Stefan Goessner zaproponował w 2007 roku JSONPath wzorowany na XPath, który w 2024 roku stał się normą RFC 9535. Ścieżki kopiowane przez ten formater używają tej notacji z dolarem i nawiasami kwadratowymi.
Często zadawane pytania
Kto wynalazł JSON?
Douglas Crockford opisał i spopularyzował JSON na początku lat 2000, choć mówi, że go odkrył, bo to istniejący już podzbiór JavaScriptu.
Dlaczego JSON nie dopuszcza końcowych przecinków ani pojedynczych cudzysłowów?
Gramatykę utrzymano jak najmniejszą, by każdy język parsował ją tak samo. Każde dodatkowe ułatwienie byłoby kolejną okazją do niezgodności dwóch parserów.
Czy JSON to to samo co obiekt JavaScript?
Nie. JSON to tekst. Klucze wymagają podwójnych cudzysłowów, a funkcje, undefined, komentarze, NaN i Infinity są niedozwolone, choć JavaScript akceptuje je w kodzie.
Chcesz wypróbować?
Otwórz PictorX w swojej przeglądarce — do uruchomienia nie jest wymagana żadna instalacja ani karta kredytowa.
Otwórz formater JSON