Czym jest JSON – JavaScript Object Notation w teorii i praktyce

Jeżeli interesujesz się programowaniem, to prędzej czy później spotkasz się z nazwą JSON. Choć początkowo niewiele miała wspólnego z programowaniem embedded, w ostatnich latach tak bardzo zyskała na popularności, że obecnie stosowana jest w zasadzie wszędzie. Czym właściwie jest JSON i do czego służy? O tym w dzisiejszym wpisie!

Czym jest JSON?

JSON, czyli JavaScript Object Notation, to lekki i prosty format danych, który jest używany do przechowywania i wymiany informacji między aplikacjami. Jest to rodzaj tekstu, który jest czytelny zarówno dla ludzi, jak i maszyn. JSON jest bardziej czytelny niż XML i znakomicie nadaje się do organizowania danych w sposób hierarchiczny.

Historia powstania JSON jest związana z potrzebą przesyłania danych między aplikacjami w sposób prosty i efektywny. W miarę jak strony internetowe stawały się bardziej dynamiczne, pojawiła się potrzeba przesyłania danych między przeglądarkami a serwerami w sposób bardziej efektywny niż wcześniejsze formaty, takie jak XML.

Pierwotnie notacja JSON-a była związana z obiektami w języku JavaScript. Pierwsza specyfikacja JSON pojawiła się w 2001 roku. JSON został opracowany przez Douglasa Crockforda, który jest znanym programistą i specjalistą od języka JavaScript. Format JSON został po raz pierwszy ustandaryzowany w 2013 roku w specyfikacji ECMA-404.

JSON szybko stał się popularnym formatem do przesyłania danych między przeglądarkami a serwerami w technologii AJAX, co umożliwiło bardziej dynamiczne i responsywne strony internetowe. JSON jest także szeroko stosowany w innych obszarach, takich jak tworzenie API, przechowywanie konfiguracji aplikacji i wymiana danych między różnymi platformami.

Wraz z rozwojem JSON zyskiwał na popularności. Stał się powszechnie stosowanym formatem danych, a jego popularność przyczyniła się do rozwoju różnych narzędzi i bibliotek do obsługi JSON w różnych językach programowania.

Dzięki swojej prostocie, czytelności i elastyczności JSON jest obecnie szeroko stosowany we wszystkich rodzajach aplikacji, nie tylko w kontekście web developmentu, co czyni go jednym z najpopularniejszych formatów danych w dzisiejszym świecie programowania.

Jak wygląda format JSON?

Pełny opis formatu JSON możemy znaleźć na oficjalnej stronie projektu. JSON jest zbudowany w oparciu o dwie struktury:

  • Zbiór par nazwa/wartość. W różnych językach jest to realizowane jako obiekt, rekord, struktura, słownik, tablica mieszająca, lista kluczowana lub tablica asocjacyjna.
  • Uporządkowana lista wartości. W większości języków jest to realizowane w postaci tablicy, wektora, listy lub sekwencji.

W JSON możemy wymienić kilka rodzajów danych:

  • Obiekt JSON – to zbiór par klucz-wartość, zapisany w nawiasach klamrowych {}. Klucze są ciągami znaków w cudzysłowach, a wartości mogą być liczbami, łańcuchami znaków, innymi obiektami, tablicami, wartościami logicznymi (true/false) lub wartościami null.
{
  "imie": "Jan",
  "nazwisko": "Kowalski",
  "wiek": 30,
  "miasto": "Warszawa",
  "aktywny": true,
  "ulubioneKolory": ["czerwony", "zielony", "niebieski"]
}
  • Tablica JSON – to uporządkowana kolekcja wartości, zapisane w nawiasach kwadratowych []. Elementy tablicy są oddzielone przecinkami.
["jabłko", "banan", "truskawka", "gruszka"]
  • Ciągi znaków – są zawsze umieszczone w cudzysłowach, zarówno pojedynczych (') jak i podwójnych ("), ale najczęściej stosuje się podwójne cudzysłowy.
"To jest przykład tekstu w formacie JSON."
  • Liczby – JSON obsługuje liczby całkowite i zmiennoprzecinkowe w notacji dziesiętnej.
  • Wartości logiczne i null – JSON obsługuje trzy specjalne wartości: true, false i null.

JSON jest elastyczny w kwestii formatowania. Białe znaki (np. spacje, tabulatory, znaki nowej linii) są opcjonalne i służą jedynie do czytelności. W praktyce zaleca się używanie wcięć, aby zwiększyć czytelność.

Czy JSON stosuje się w embedded?

Przez lata twórcy oprogramowania embedded pracowali nad produktami, które działały samodzielne i nie wymagały dostępu do Internetu. Obecnie liczba produktów podłączonych do Internetu jest bardzo duża, a wraz z nim programiści systemów wbudowanych muszą znać podstawowe technologie wymagane do komunikacji w sieciach, takich jak protokoły internetowe i technologie przesyłania wiadomości.

JSON w systemach wbudowanych często stosuje się dokładnie w tych samych przypadkach, co w innych językach. W embedded jest zwykle używany razem z protokołami IoT, które nie zapewniają natywnej obsługi serializacji struktury danych, takimi jak HTTP/Rest, WebSockets, MQTT i protokół SMQ IoT.

Jednak format JSON możemy zastosować także w innych przypadkach, np. kiedy przesyłamy dane sterujące robotem, albo dane zwrotne o jego stanie pracy. JSON jest na tyle uniwersalny, że można go zastosować praktycznie wszędzie.

Zalety i wady JSON

Częściowo opisałem już cechy formatu JSON. Spróbujmy je sobie usystematyzować i podsumować. Do zalet formatu JSON możemy zaliczyć:

  • Czytelność – JSON jest łatwy do zrozumienia zarówno dla ludzi, jak i programów komputerowych. Jest to szczególnie przydatne w komunikacji między różnymi systemami.
  • Lekkość – JSON jest lekki i nie zawiera zbędnych znaczników, co sprawia, że jest bardziej oszczędny w przesyłaniu przez sieć.
  • Łatwa konwersja – Możemy łatwo przekształcać dane w formacie JSON na obiekty w wielu językach programowania, co ułatwia pracę z nimi.
  • Wszechstronność – JSON jest szeroko stosowany i wspierany przez wiele języków programowania i technologii.

Wśród wad JSON można wymienić:

  • Brak typów danych – w JSON nie ma natywnego wsparcia dla różnych typów danych, co może prowadzić do błędów w interpretacji danych.
  • Brak komentarzy – JSON nie pozwala na dodawanie komentarzy, co może utrudniać zrozumienie kodu.
  • Większy rozmiar – w porównaniu do formatów binarnych.

Przykłady JSON

JSON może być także używany w sterowaniu robotami. Możemy go użyć np. do sterowania prędkością i kierunkiem ruchu robota mobilnego.

{
  "type": "move",
  "direction": "forward",
  "speed": 0.5
}

Albo do przesłania koordynatów.

{
    "type": "position",
   "x": 10,
    "y": 20
}

Możemy też przesłać dane zwrotne o poziomie naładowania akumulatora oraz dane z czujników.

{
  "type": "sensors",
  "battery": 80,
  "temperature": 25
}

Białe znaki w JSON

JSON został przygotowany w taki sposób, aby mógł być łatwo interpretowany zarówno przez ludzi, jak i komputery. Dla człowieka bardziej przejrzysta jest forma JSON-ów przedstawiona w powyższych przykładach, gdzie stosowane są tabulatory, znaki nowej linii i spacje. W przypadku systemów embedded, gdzie zależy nam jednak na przesyłaniu jak najmniejszej ilości danych, białe znaki (czyli właśnie spacje, znaki nowej linii itd.) możemy pominąć. Wtedy JSON będzie wyglądał w ten sposób:

{"type":"move","direction":"forward","speed":0.5}
{"type":"position","x":10,"y":20}
{"type":"sensors","battery":80,"temperature":25}

Ramki JSON wygodniej jest projektować je w formie pierwszej z białymi znakami. Ale za pomocą dostępnych narzędzi (np. JSON Minifier) możemy łatwo je przekształcić do formy drugiej. Dodatkowo takiej narzędzia sprawdzą nam, czy JSON jest poprawny 🙂

Podsumowanie

Na dzisiaj to tyle. Przedstawiłem Ci podstawowe informacje dotyczące formatu JSON oraz przykłady, gdzie może znaleźć zastosowanie w programowaniu systemów wbudowanych. W kolejnym wpisie zajmiemy się praktyczną częścią tematu, czyli przesyłaniem JSON-ów przez UART.

Jeżeli podobał Ci się wpis lub masz jakieś własne przemyślenia, zostaw komentarz. Pamiętaj też, aby polubić mój profil na Facebook-u oraz zasubskrybować kanał na YouTube.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *