JavaScript Object Notation (JSON w skrócie i wymawiane podobnie jak imię ‘Jason’), to rodzaj formatu wymiany danych. Jak wskazuje sama nazwa, JSON wywodzi się z JavaScript, ale nie jest on jedynym właścicielem kodu, który pozwala na jego wykorzystanie. W rzeczywistości wiele innych języków programowania ma go do dyspozycji, w tym Ruby, PHP, Python oraz Java.
Gdy plik JSON istnieje samodzielnie, używa rozszerzenia .json, ale będąc formatem, który można łatwo przesyłać między serwerem WWW a klientem (lub przeglądarką), może być również zdefiniowany jako format .html. W takim przypadku może to być obiekt przypisany do zmiennej lub występować jako ciąg znaków JSON w cudzysłowie.
JSON jest dobrą alternatywą dla XML, ponieważ jest bardziej czytelny i wymaga minimalnego formatowania. Z tego samouczka dowiesz się o danych, które mogą być przechowywane w plikach JSON, a także o ogólnej składni i strukturze tego formatu.
Struktura & Składnia
Obiekt JSON to format danych, który wykorzystuje nawiasy klamrowe do reprezentowania par klucz-wartość. Pracując z JSON, najczęściej zobaczysz go w plikach .json, ale w kontekście programu może on również istnieć jako ciąg znaków lub obiekt JSON.
Oto przykład, jak wygląda obiekt JSON:

Chociaż jest to dość krótki przykład, a obiekty JSON mogą być znacznie dłuższe, dokładnie pokazuje on, jak ten format jest zazwyczaj skonstruowany – z dwoma nawiasami klamrowymi na każdym końcu i parami klucz-wartość wypełniającymi przestrzeń między nimi. Większość danych w JSON jest hermetyzowana w elemencie JSON.
Pary klucz-wartość są rozdzielone dwukropkiem (“klucz” : “wartość”). Każda z tych par jest oddzielona przecinkiem jako kolejny element listy. W rezultacie środkowa część formatowania JSON wygląda następująco: “klucz” : “wartość”, “klucz” : “wartość”, “klucz” : “wartość”. W powyższym przykładzie, "name" : "Akshay" jest na przykład pierwszą parą klucz-wartość.
Klucze w każdym obiekcie muszą być unikalne, mogą być dowolnym prawidłowym ciągiem znaków ujętym w podwójny cudzysłów (“klucz”) i zawsze znajdują się po lewej stronie dwukropka. Chociaż spacje w ciągach kluczy są dozwolone (jak na przykład w “first name”), utrudnia to jednak dostęp do nich od strony programistycznej. Z tego powodu powszechnie przyjętą praktyką programistyczną jest zastępowanie spacji w kluczach podkreśleniami (“first_name”).
Wartości w JSON znajdują się po prawej stronie dwukropka. Na najbardziej podstawowym poziomie szczegółowości muszą one należeć do jednego z 6 określonych typów danych:
- Liczby
- Obiekty
- Tablice
- Ciągi znaków
- Prawda lub fałsz (Boolean)
- Null
W następnej sekcji omówimy bardziej złożone typy danych tablicy obiektów JSON, przy czym każda wartość przekazywana do JSON zachowuje swoją składnię. Innymi słowy, ciągi znaków nadal będą pojawiać się w cudzysłowie, podczas gdy wartości liczbowe nie.
Zgodnie z konwencją format JSON jest zazwyczaj zapisywany w formacie wielowierszowym. Można go jednak również sformatować w jednej linii:

Ten typ formatowania jest częściej spotykany w przypadku ciągów znaków JSON lub wewnątrz innych typów plików. Podczas pracy z ogromnymi zestawami danych zapisywanie dwukropków i par klucz-wartość w osobnych wierszach sprawia, że lista jest bardziej czytelna dla człowieka, ponieważ w JSON brakuje ułatwiających separację białych znaków:

Chociaż obiekt JSON przypomina JavaScript, należy pamiętać, że są to odrębne formaty. Podczas gdy JavaScript pozwala na używanie funkcji, JSON na to nie pozwala. To, co czyni JSON tak wartościowym, to jego kompatybilność międzyjęzykowa, pozwalająca na jego interpretację przez wszystkie platformy programistyczne.
Do tej pory przyjrzeliśmy się formatowi JSON tylko w jego najprostszej postaci, ale może on ewoluować hierarchicznie i w bardziej złożony sposób, gdy zawiera zagnieżdżone obiekty i tablice. W następnej sekcji przyjrzymy się bardziej zaawansowanemu JSON.
Wykorzystanie złożonych typów JSON
Oprócz zagnieżdżonych tablic, JSON może również przechowywać zagnieżdżone obiekty. Te obiekty i tablice będą przekazywane jako wartości kluczy i będą z nimi powiązane, tworząc pary klucz-wartość.
- Tworzenie zagnieżdżonych obiektów
W poniższym users.json obraz pliku, dla każdego z czterech użytkowników przekazywany jest zagnieżdżony obiekt JSON („akshay”, „sam”, „Andrew”, „James”). Każdy użytkownik posiada własne zagnieżdżone klucze („location” oraz „username”):

Wyróżniona część przedstawia przykład pierwszego zagnieżdżonego obiektu. Nawiasy klamrowe są użyte w powyższym przykładzie do utworzenia zagnieżdżonego obiektu JSON z odpowiadającą mu nazwą użytkownika i szczegółami dotyczącymi stanowiska dla każdego z czterech użytkowników. W przypadku korzystania z obiektów, przecinki służą do rozróżniania elementów na podstawie określonego atrybutu użytkownika.
- Tworzenie zagnieżdżonych tablic
Tablice JavaScript przekazywane jako wartość mogą być również wykorzystywane do zagnieżdżania danych w formacie JSON. Odbywa się to poprzez użycie [ ] (nawiasów kwadratowych) na końcu typów tablicowych, przy czym tablice są uporządkowanymi listami zawierającymi unikalne typy danych:

W wyróżnionej sekcji powyższych przykładów, 2 profile w mediach społecznościowych i 2 linki do stron internetowych Akshaya’s są użyte wewnątrz tablicy zagnieżdżonych informacji, ze względu na obecność nawiasów kwadratowych. Poprzez zastosowanie zagnieżdżania w ten sposób w formacie JSON, możemy osiągnąć większą wszechstronność w pracy z hierarchiczną i złożoną zawartością danych.
- Porównanie z XML
Extensible Markup Language (XML) zapewnia metodę przechowywania danych, do których dostęp mogą mieć zarówno maszyny, jak i ludzie. Podobnie jak JSON, XML może być używany przez wiele języków programowania. W przeciwieństwie do JSON, XML wymaga znacznie więcej tekstu, a co za tym idzie, jest bardziej skomplikowany i czasochłonny w przygotowaniu. Podczas gdy standardowa funkcja może analizować JSON, XML wymaga parsera specyficznego dla XML. Ponadto XML nie pozwala na korzystanie z tablic. Porównajmy te same dane sformatowane w XML i JSON:

XML wymaga znacznie więcej tekstu i zajmuje więcej miejsca. Wymaga również znaczników zamykających, podczas gdy JSON jest znacznie bardziej kompaktowy i prościej zorganizowany. Osoby zaznajomione z HTML prawdopodobnie zauważą podobieństwo w użyciu znaczników przez XML.
Przed podjęciem decyzji, którego formatu użyć, zawsze warto ocenić zakres i potrzeby projektu. JSON jest mniej gadatliwy, lżejszy i szybki w użyciu w aplikacjach AJAX i innych sytuacjach. Typ projektu pomoże wyłonić najlepiej dopasowane struktury danych.
Więcej informacji o JSON
JSON to wszechstronny i naturalny format, który można wdrożyć w wielu językach programowania. Pełną listę obsługiwanych języków można znaleźć na stronie „Introducing JSON”. Dodatkowo informacje o parsowaniu i kompatybilności można znaleźć w „bibliotece iQuery”.
Ostatecznie najprawdopodobniej nie będziesz zbyt często pisać czystego JSON-a. Zamiast tego będziesz go pobierać ze źródeł danych lub tłumaczyć inne pliki danych na JSON. Korzystając z narzędzia open-source Mr. Data Converter, możesz konwertować dane CSV lub rozdzielane tabulatorami z programów arkuszy kalkulacyjnych na format JSON. Dzięki licencjonowanej na zasadach Creative Commons platformie utilities-online.info możesz konwertować XML na JSON i odwrotnie. Korzystając ze zautomatyzowanego oprogramowania, dokładnie sprawdź raporty, aby wyeliminować wszelką nadmiarowość.
Możesz również użyć JSONLint do weryfikacji kodu JSON oraz JFiddle do jego oceny w kontekście tworzenia stron internetowych podczas konwersji innych typów na format JSON.
Podsumowanie
Zyskując coraz większe API wsparcie (w tym Twitter API), JSON jest lekkim formatem danych, który ułatwia edycję, przechowywanie i udostępnianie danych. Ponieważ nie będziesz generować własnych plików .json, lecz raczej otrzymywać je z innych źródeł, ważniejsze jest zastanowienie się, jak używać JSON w swoich programach, niż nad samą jego strukturą.
Oto kolejne zasoby z naszego bloga, które pomogą Ci programować w języku JavaScript:
- Dowiedz się, jak działają prototypy i dziedziczenie w JavaScript
- Dowiedz się szczegółowo, jak dodać JavaScript do HTML.
- Jeśli budujesz własną aplikację internetową, zapoznaj się z naszym przewodnikiem po wyborze najlepszej konfiguracji serwera.
Miłego kodowania!
Komentarze
Brak komentarzy. Bądź pierwszy.