JSON (
JavaScript Object Notation,
obiektowy zapis JavaScript) to tekstowy sposób zapisu danych (format danych) niezależny od platformy komputera. Służy do transferu danych, które mogą być zawarte w tablicach w obiektach.
JSON przedstawia dowolną strukturę danych (liczba, łańcuch, boolean, null, obiekt lub z nich złożoną tablicę) zapisaną w formie tekstowej (łańcuch tekstowy). Złożoność hierarchii nie jest teoretycznie nijak ograniczona. Zapis
JSON jest równocześnie ważnym zapisem języka
JavaScript.
Zapis danych
JSON jest bardzo prosty, odciążony oraz łatwy do odczytu. W porównaniu do formatu
XML JSON jest oszczędniejszy, bardziej czytelny oraz prostszy w obróbce. Struktury danych zapisane w
JSON można w prosty sposób użytkować nie tylko w
JavaScript ale również w innych językach programowania oraz środowiskach włącznie z systemem PROMOTIC.
Typy danych w JSON
-
String: Łańcuch tekstowy. Łańcuch musi być włożony do cudzysłowia (apostrofy nie są zezwolone) oraz może zawierać dowolne znaki
Unicode. Cudzysłów oraz lewy ukośnik należy wstawić w formie
\" oraz
\\. Dowolny znak (tak samo jak w
JavaScript) można wprowadzić również w formie
uXXXX, gdzie XXXX przedstawia kod znaku z z tabeli
Unicode zapisany w układzie szesnastkowym.
Przykład:
"Temperatura", "Nazwa jest \"PROMOTIC\""
- Number: Liczba, liczba całkowita lub liczba rzeczywista (włącznie z zapisem wykładnika). Separatorem dziesiętnym jest zawsze kropka.
Przykład: 1316
, -1.23
, 0.12e-4
- Boolean: Wartość logiczna.
Przykład: true
, false
- Null: wartość null (nie określono).
Przykład: null
- Array: Tablica (lista wartości). Ogranicają ją nawiasy kwadratowe []. Tablica w JSON to zbiór zawierający uszeregowaną listę wartości. Wartościami tablicy możgą być dowolne typy danych JSON włącznie obiektu lub tablicy.
Przykład:
[12, "Beethoven", 33.6, false]
[0.2, ["Mozart", "Wolfgang, "Amadeus", 1756], "Salzburg", 35.8, false]
-
Object: Obiekt (para nazwa-wartość). Ograniczają go nawiasy klamrowe
{}. Obiekt w
JSON nie jest pełnowartościowym obiektem, jaki znamy z
JavaScript. Chodzi o kontejner, który zawiera tylko dane bez żadnych metod. Każda pozycja danych (wartość) obiektu posiada swój klucz, który jest typu
String. Do obiektu można wkładać następne obiekty oraz tablice, w taki prosty sposób można wytwarzać bardziej złożone struktury.
Przykład:
{"x": 100, "y": 100}
{"position": {"x": 100, "y": 100}, "size": {"dx": 200, "dy": 100}}
Wartości reszty typów danych nie można bezpośrednio wkładać ale muszą one zostać przetransformowane do niektórego z typów
JSON. Na przykład w celu włożenia daty do
JSON należy ją zamienić do łańcucha lub liczbę.
JSON korzysta z dwu podstawowych uniwersalnych struktur:
- Kolekcja par nazwa-wartość (
Object) - w systemie PROMOTIC to obiekt
PmMap.
- Uszeregowana lista wartości (
Array) - w systemie PROMOTIC to obiekt
PmArray.
Wsparcie JSON w systemie PROMOTIC
Metoda Pm.JsonParse: Z tekstu w formacie
JSON zostanie wytworzony obiekt, tablica lub wartość podstawowa
Metoda Pm.JsonStringify: Z obiektu, tablicy lub podstawowej wartości wytworzy tekst w formacie
JSON
Przykład całościowy:
Zapis tekstowy
JSON:
{"name":"BoilerRoom"; "count":2; "boilers": [{"temperature":36.3;"power":78}, {"temperature":12.6;"power":0}]}
przy pomocy metody
Pm.JsonParse zostanie przekonwertowany do jednej zmiennej (obiekt
PmMap) zawierającej właściwości:
name: typ danych String, wartość="BoilerRoom"
count: typ danych Double, Wartość=2
boilers: typ danych PmArray:
0. indeks: typ danych PmMap:
temperature: typ danych Double, Wartość=36.3
power: typ danych Double, Wartość=78
1. indeks: typ danych PmMap:
temperature: typ danych Double, Wartość=12.6
power: typ danych Double, Wartość=0