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
inull
.
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.