fbpx
goodfirms LOGO Created with Sketch.








    Czym jest JSON?

    04
    październik
    2022
    5 minut czytania
    Udostępnij

    JSON to jeden z najpopularniejszych obecnie formatów wymiany danych komputerowych. Opracowany początkowo na potrzeby języka JavaScript JSON miał ułatwić komunikację pomiędzy front-endowym klientem aplikacji a back-endowym serwerem. Developerzy jednak dość szybko dostrzegli korzyści płynące z możliwości łatwej modyfikacji danych w trybie ad hoc. W rozpowszechnieniu się JSONa bardzo pomogła także opracowana w 2005 roku technika tworzenia aplikacji AJAX (ang. Asynchronous JavaScript and XML). Tradycyjny model budowania aplikacji, w którym każde żądanie ze strony klienta (np. przeglądarki internetowej) wymaga przesyłania całej strony, mocno ogranicza ich funkcjonalność. Dzięki asynchronicznemu przeładowywaniu dokumentów współcześnie tworzone aplikacje internetowe, aplikacje mobilne i inne są w stanie dynamicznie reagować na działania podejmowane przez użytkowników bez konieczności przeładowywania całej strony. Czym jest JSON? Jakie korzyści płyną ze strukturyzacji danych w formacie JSON? Jak używać JSON z zagnieżdżonymi obiektami? Czym JSON różni się od formatów takich jak CSV, YAML i XML? W poniższym artykule skupimy się także na typach danych oraz postaramy się również przybliżyć podstawową składnię formatu JSON.

    Czym jest JSON i jakie typy danych obsługiwane są przez format JSON i jak to zapisać?

    Jak już wspomnieliśmy pliki w formacie takim jak JSON (ang. JavaScript Object Notation) służą do wymiany danych komputerowych. Przenoszenie większych i wypełnionych struktur danych z jednej aplikacji bądź usługi do innej ma sens jedynie w sytuacji kiedy druga strona jest je w stanie zrozumieć. Z tego też powodu naukę niemalże wszystkich języków programowania zaczyna się od najczęściej od omówienia podstawowych typów danych. W przypadku JSONa najprościej podzielić je można na liczby, ciągi znaków, wartości logiczne, puste literały, obiekty i tabele. Wygląda to w następujący sposób:

    JSON przykład liczbowy

    {

      "liczba" : 555,

      "cyfra" : 2

    }

    Do klucza (ang. key) liczba przypisana zostaje wartość 555, zaś do cyfry 2. W powyższym zapisie bardzo istotny jest przecinek umiejscowiony na końcu linijki oraz nieobecny po stronie wartości cudzysłów. Całość notacji musi być również zawsze opatrzona otwierającymi i zamykającymi nawiasami klamrowymi {}

    JSON przykład ciągu znaków

    {

      "imie" : "Żaneta",

      "PIN" : "0000",

      "telefon" : "112"

    }

    Ciąg znaków (ang. string) w przeciwieństwie do wspomnianych wyżej liczb musi być zapisany w cudzysłowie. Pozwala to przede wszystkim uniknąć sytuacji, w której wartość taka jak numer telefonu jest modyfikowana poprzez dodawanie, mnożenie, odejmowanie albo dzielenie. Zgodnie z obowiązującą w środowisku developerów konwencją w polu klucza nie powinno się stosować znaków diakrytycznych (np. ą, ć, ę, ł, ń, ó, ś, ź, ż). Warto tu jednak zaznaczyć, iż po stronie klucza mogą się one pojawiać bez żadnych ograniczeń.

    JSON przykład wartości logicznej

    {

      "PosiadaUprawnieniaAdministratora" : true,

      "ZgodaNaNewsletter" : false

    }

    Aby zadeklarować wartości logiczne takie jak prawda i fałsz należy skorzystać z nieopatrzonych cudzysłowem słów true i false.

    JSON przykład pustego literału

    {

      "DodatkoweInstrukcje" : null

    }

    Pusty literał (null) podobnie jak wartości logiczne zapisujemy zawsze bez cudzysłowy.

    JSON przykład obiektu

    {

      "Samochod" :   { "model" : "GT" ,  "rocznik" : "2001" ,  "klimatyzacja" : true}

    }

    W powyższym przykładzie do klucza będącego obiektową reprezentacją samochodu definiujemy model, rocznik i to czy auto ma klimatyzację. Jak widać jest to klimatyzowane GT z 2001 roku.

    JSON przykład tabeli

    {

      miasta: [ “Warszawa”, “Wrocław”, “Kraków” ]

    }

    Podobnie jak w przypadku wielu innych języków początek tabeli otwiera się przy pomocy nawiasu kwadratowego, który po zdefiniowaniu ostatniego elementu musi być oczywiście domknięty. W naszym przykładzie ciągi znaków reprezentują 3 polskie miejscowości w tabeli miasta. Bardzo istotne jest to, iż w tabeli można tam także umieścić wszystkie pozostałe typy danych.

    Jak używać JSON z zagnieżdżonymi obiektami?

    Jedną z wielu zalet JSONa są ogromne możliwości związane z wykorzystaniem struktury obiektów zagnieżdżonych (ang. nested objects). W praktyce odczuwalnie ułatwia to proces definiowana relacji pomiędzy danymi, obiektami, elementami czy tabelami. W poniższym przykładzie tworzymy wpierw zmienną o nazwie „auto” i wartości „GT” przypisanej do pola model, a następnie wskazujemy, iż poprzednikiem jest zagnieżdżony obiekt marki „TDI”.

    let auto = { model: "GT",

      poprzednik: {

        marka: "TDI"

      }

    }

    Dlaczego w architekturze formatu JSON składnia jest czytelniejsza od CSV?

    Dzięki swojej prostej i przejrzystej składni JSON wyróżnia się na tle innych tekstowych formatów komputerowej wymiany danych, ponieważ z reguły są one dużo bardziej zawiłe i tym samym mniej czytelne dla ludzki. Format CSV (ang. Comma-separated values) w teorii wydaje się dużo prostszy, ponieważ są to przecież tylko wartości oddzielone przecinkami, ale w praktyce nie do końca tak jest. Z perspektywy JSON składnia jest trochę bardziej skomplikowana niż w CSV, ale z drugiej strony jest ona w pełni czytelna dla niemalże każdego programisty.

    Dlaczego format JSON cieszy się większą popularnością od XML?

    Podobnie jak w przypadku formatu CSV XML także przegrywa z JSONem pod kątem czytelności kodu. W formacie XML (ang. Extensible Markup Language), zwanym również rozszerzalnym językiem znaczników, trzeba stosować zdecydowanie więcej znaków i odgórnie zdefiniowanych znaczników. Przykładem może być tu choćby zwykły znak mniejszości „<”, który w XML zapisać trzeba w następujący sposób „<”. Znaki mniejszości oraz większości pełnią w XMLu funkcję podobną do wszystkich pozostałych rodzajów nawiasów, ponieważ tak jak w HTMLu to właśnie pomiędzy nimi umieszcza się dane. Większa liczba znaków w pliku typu XML podnosi odczuwalnie rozmiar oraz spowalnia wczytywanie. Mając na uwadze, iż wszystkie przeglądarki internetowe oparte są na JavaScripcie, łatwo zrozumieć można, dlaczego będący podzbiorem składniowym JavaScriptu JSON zastąpił w wielu aplikacjach XML.

    JSON zalety i najczęstsze zastosowania

    Niezwykle popularny w środowisku programistów format JSON wyróżnia się na tle alternatywnych rozwiązań (np. YAML, XML, CSV itp.) przede wszystkim pod kątem wyższego poziomu czytelności. Wielu doświadczonych developerów zdecydowało się na JSONa również ze względu kompatybilność z zewnętrznymi bibliotekami oraz pakietami. JSON świetnie sprawdza się w przypadku aplikacji oraz programów opartych na językach takich jak C, C#, C++, Java, JavaScript, ML, Perl, PHP, Python, R, Ruby czy ActionScript. Z perspektywy aplikacji webowych JSON dużo częściej wykorzystywany jest przechowywania danych tymczasowych po stronie front-endu, ale nie zmienia to faktu, iż ma on także wiele praktycznych zastosowań po stronie back-endu.

    Mając na uwadze to, w jaki sposób ludzki umysł postrzega i przetwarza dane tekstowe, nie sposób się dziwić, dlaczego większość programistów wybiera właśnie format JSON. Dane ustrukturyzowane w JSON są dużo bardziej czytelne niż wspomniane wcześniej pliki typu CSV i XML. Najprościej rzecz ujmując, ułatwia to odczuwalnie i przyśpiesza procesy związane z analizą składniową. Warto zwrócić też uwagę, iż JSON cechuje się wyższym poziom interoperacyjności niż XML i CSV. W praktyce zdecydowanie ułatwia to przesyłanie danych pomiędzy różnymi systemami oraz aplikacjami internetowymi. JSON ceniony jest także ze względu na stosunkowo niewielki rozmiar plików oraz możliwość uproszczenia złożonych modeli danych (np. do czytelnych dla developera elementów). To właśnie dzięki niemu można przyśpieszyć wymianę danych pomiędzy klientem a serwerem albo poszczególnymi usługami internetowymi.

    JSON vs YAML – Gdzie najczęściej wykorzystuje się format YAML?

    Z technicznego punktu widzenia YAML stanowi nadzbiór języka JSON, więc w praktyce oznacza to, iż wszystkie pliki YAML bez problemu wczytamy tam, gdzie potrzebny jest JSON. Ciekawostką jesto to, iż początkowo nazwa YAML była akronimem od słów Yet Another Markup Language, ale z czasem zmienioną ją na YAML Ain’t Markup Language. Zabieg ten miał za zadanie podkreślić główne zastosowanie YAML, jakim jest opisywanie zbiorów danych w ustrukturyzowany sposób. Od formatu JSON najprościej odróżnić go można po braku nawiasów, których rolę przejmują wcięcia w tekście. Obecnie ustrukturyzowane w formacie YAML dane są niezwykle często wykorzystywane w charakterze back-endowych plików konfiguracyjnych systemu albo serwera. W plikach z rozszerzeniem *.yml  i *.yaml zapisać można także logi, obiekty, instrukcje i dane. Ze względu na stosunkowo przejrzystą składnię YAML ułatwia też proces debuggowania złożonych struktur danych

    JSON – Podsumowanie

    Okrzyknięty przez wielu uniwersalnym formatem danych JSON wykorzystywany jest w milionach aplikacji webowych na całym świecie. Dzięki swojej przejrzystej i wywodzącej się z JavaScriptu składni jest on zdecydowanie bardziej czytelny dla programistów niż CSV i XML. Warto pamiętać też, iż wszystkie wspomniane wyżej wskazówki dotyczące tego jak należy  zapisywać poszczególne typy obiektów, dotyczą jedynie formatu JSON i tylko częściowo sprawdzą się w konfiguracji YAML.

    Wiktor Sobczyk

    Bezpłatna konsultacja

    Powiedz nam czego potrzebujesz, a nasi eksperci Powiedzą Ci jak to zrobić, ile to kosztuje i na kiedy będzie gotowe.

    Inne wpisy na blogu

    Poszukiwanie pracy na stanowisku frontendowego developera jest dużo łatwiejsze, jeśli zamiast lapidarnego CV można pochwalić się interesującym portfolio. Wbrew pozorom zdobyte w trakcie szkoleń, boot campów i kursów realizowanych na platformach e-learningowych certyfikaty oraz dyplomy nie są wcale tak dobrym wyznacznikiem posiadanych umiejętności, jak mogłoby się zdawać. Mając na uwadze, dlaczego nie należy oceniać książek…
    tagi: #Kariera
    czytaj artykuł
    Cykl życia defektów we Flutterze
    Karol
    6 minut czytania
    18
    listopad
    2022
    Testowaniem opracowywanych, utrzymywanych i rozwijanych aplikacji webowych zajmują się nie tylko programiści, którzy odpowiedzialni są za kod źródłowy, ale także testerzy. Przy pomocy zautomatyzowanych i manualnych testów da się zweryfikować pod kątem obecności błędów każdy rodzaj oprogramowania. Dzięki wsparciu profesjonalistów można uniknąć nieprzyjemnej sytuacji, w której rozeźleni użytkownicy sami zgłaszają wykryte wady i defekty. Aby…
    tagi: #Bezpieczeństwo
    czytaj artykuł
    Jak możemy Ci pomóc?
    Porozmawiaj z nami!








      Kamil
      Head of Business Development
      Kliknij, aby podejrzeć