Bonusowy materiał o gromadzeniu danych w JavaScripcie! Traktujcie ten artykuł jako "add-on" do materiału o obiektowym typie danych. Samo trzymanie składowych w obiektach nie uchroni danych przed działaniem przycisku "Odśwież". Wszystko to, co miało swoją obecną wartość jest wykopywane jak po restarcie konsoli NES. Musiał istnieć sposób na bezpieczne przechowywanie danych, aby można było później je przywrócić jak podczas wczytywania zapisu gry. Po to cały ten JSON w języku JavaScript! Poznajcie tajemnicę tego skrótu i w jakim celu jest to wykorzystywane.

JSON W JĘZYKU JAVASCRIPT BRZMI BARDZO PODOBNIE DO...

Nie, nie. Mój pseudonim nie ma z tym nic wspólnego. To zbieg okoliczności. Choć brzmi identycznie, to piszę się troszkę inaczej.

JSON to skrót od "JavaScript Object Notation" i konkretnie chodzi o zapis wielu danych pewnego obiektu w jednym pliku jako kontenerze. Dlaczego notacja obiektowa? Może dlatego, że istotnie przypomina to obiektowy typ danych z języka?

{
	"name": "Jan",
	"surname": "Kowalski",
	"age": 33,
	"profession": "hydraulik"
}

No właśnie. JSON w języku JavaScript może być wykorzystywany do przechowywania praktycznie każdych danych. Od kont użytkowników do poziomów gier. Wadą może być fakt, iż takie dane można bez problemu edytować. Ja tylko piszę o faktach.

"OBJECT" VS. JSON

Warto przyjrzeć się różnicom jakie zachodzą pomiędzy obiektem definiowanym w kodzie źródłowym, a notacją "JSON'ową".

NAZWY W CUDZYSŁOWACH!

Od razu rzuca się w oczy szczegół dotyczący nazw. W notacji JSON nazwy wszystkich właściwości MUSZĄ być umieszczone w cudzysłowach!!! Tworząc obiekt w kodzie źródłowym jest to opcjonalne. Może być tak:

const o =
{
	"x": 45
};

a może być też tak:

const o =
{
	x: 45
};

W pliku w formacie ".json" nazwy MUSZĄ być w cudzysłowach! Jak nie, to błąd podczas odczytu!

TYLKO SAME WARTOŚCI!

Zapomnijcie o wstawianiu definicji metod! JSON w języku JavaScript służy jedynie do przechowywania danych, a od kodu źródłowego macie plik skryptowy (rozszerzenie ".js").

METODY JSON W JĘZYKU JAVASCRIPT

Dla poszerzenia informacji o formacie JSON przytoczę dwie metody konwertujące z jednego do drugiego typu danych. Widzicie to? Metody! Więc odwołujemy się do nich poprzez obiekt! Czego tu nie pokażę, piszemy wywołanie w taki sposób:

JSON.[metoda]([parametry]);

Dobrze?

STRINGIFY

Metoda "stringify" służy do konwertowania obiektu na łańcuchowy typ danych "string". Dajmy na to, że mamy taki obiekcik:

const o =
{
	x: 59,
	y: 74,
	z: 67
};

To po wywołaniu metody "JSON.stringify" i podaniu naszego obiektu za parametr, uzyskamy to samo tylko w formie łańcucha znaków:

const output = JSON.stringify(o);

console.log(output);
PARSE

"parse" robi w drugą stronę. To jest konwersja łańcucha znaków na obiekt. Czyli dysponując takim łańcuchem jaki jest postaci obiektowej:

const stringObject = '{"x":59,"y":74,"z":67}';

możemy przerobić na prawdziwy obiektowy typ danych korzystając z metody "JSON.parse":

const o = JSON.parse(stringObject);

console.log(o);

LICZBY ZMIENNOPRZECINKOWE LEPIEJ TRAKTOWAĆ JAK "STRING"

Zanim odejdziecie z dotychczasową wiedzą, dodam od siebie pewną radę jaką wyczytałem z książki. Zaleca się, żeby liczby zmiennoprzecinkowe (wiecie, te z ułamkiem) wpisać do pliku JSON w postaci łańcuchowej ("string"). Uzasadnieniem ma być uniknięcie niewielkiej deformacji wartości pod wpływem utraty precyzji podczas zaokrąglania przez język programowania, niekoniecznie JavaScript (to może być każdy język wspierający odczyt plików typu JSON, mimo nazwy):

{
	"pi": "3.14"
}
JSON w języku JavaScript

JavaScript Object Notation to format zapisu danych przypominający strukturę obiektowego typu danych. Mimo języka w nazwie, praktycznie każdy inny język programowania jeśli wspiera zapis i odczyt, może operować na pliku ".json".


Najważniejsze zostało przekazane. JSON w języku JavaScript ma największe więzi, aczkolwiek w praktyce KAŻDY język programowania może korzystać z tego formatu, jeśli wspiera jego obsługę (zapis i odczyt).

PODOBNE ARTYKUŁY