JSON (
JavaScript Object Notation,
JavaScript objektový zápis) je textový způsob zápisu dat (datový formát) nezávislý na počítačové platformě. Slouží pro přenos dat, která mohou být organizována v polích nebo obsažena v objektech.
JSON představuje libovolnou datovou strukturu (číslo, řetězec, boolean, null, objekt nebo z nich složené pole) zapsanou v textové podobě (textový řetězec). Složitost hierarchie není teoreticky nijak omezena. Zápis
JSON je současně platným zápisem jazyka
JavaScript.
JSON zápis dat je velmi jednoduchý, odlehčený a snadno se čte. Proti formátu
XML je
JSON úspornější, čitelnější a lépe se zpracovává. Datové struktury zapsané v
JSON se snadno používají kromě samotného
JavaScript i v ostatních programovacích jazycích a prostředích včetně systém PROMOTIC.
Typy dat v JSON
-
String: Textový řetězec. Řetězec musí být vložen do uvozovek (apostrofy nejsou povoleny) a může obsahovat všechny znaky
Unicode. Uvozovky a zpětné lomítko je nutno vložit v podobě
\" a
\\. Libovolný znak (stejně jako v
JavaScript) lze zadat i v podobě
uXXXX, kde XXXX představuje kód znaku z tabulky
Unicode zapsaný hexadecimálně.
Příklad:
"Teplota", "Název je \"PROMOTIC\""
- Number: Číslo, celé číslo nebo reálné číslo (včetně zápisu s exponentem). Desetinný oddělovač je vždy tečka.
Příklad: 1316
, -1.23
, 0.12e-4
- Boolean: Logická hodnota.
Příklad: true
, false
- Null: hodnota null (nezadáno).
Příklad: null
- Array: Pole (seznam hodnot). Ohraničují jej hranaté závorky []. Pole v JSON je kontejner obsahující seřazený výpis hodnot. Hodnotami pole může být kterýkoliv datový typ JSON včetně objektu nebo pole.
Příklad:
[12, "Beethoven", 33.6, false]
[0.2, ["Mozart", "Wolfgang, "Amadeus", 1756], "Salzburg", 35.8, false]
-
Object: Objekt (páry název-hodnota). Ohraničují jej složené závorky
{}. Objekt v
JSON není plnohodnotný objekt, jaký známe z
JavaScript. Jedná se o kontejner, který obsahuje pouze data a žádné metody. Každá datová položka (hodnota) objektu má svůj klíč, který je typu
String. Do objektu můžeme vkládat další objekty a pole, lze tak snadno vytvářet složitější struktury.
Příklad:
{"x": 100, "y": 100}
{"position": {"x": 100, "y": 100}, "size": {"dx": 200, "dy": 100}}
Hodnoty ostatních datových typů nelze přímo vkládat a musí se převést na některý z
JSON typů. Například datum pro vložení do
JSON převedeme do řetězce nebo do čísla.
JSON je tedy postaven na dvou univerzálních strukturách:
- Kolekce párů název-hodnota (
Object) - v systému PROMOTIC je to objekt
PmMap.
- Seřazený seznam hodnot (
Array) - v systému PROMOTIC je to objekt
PmArray.
Podpora JSON v systému PROMOTIC
Metoda Pm.JsonParse: Z textu ve formátu
JSON vytvoří objekt, pole nebo elementární hodnotu
Metoda Pm.JsonStringify: Z objektu, pole nebo elementární hodnoty vytvoří text ve formátu
JSON
Komplexní příklad:
JSON textový zápis:
{"name":"BoilerRoom"; "count":2; "boilers": [{"temperature":36.3;"power":78}, {"temperature":12.6;"power":0}]}
se metodou
Pm.JsonParse převede na jednu proměnnou (objekt
PmMap) obsahující vlastnosti:
name: datový typ String, hodnota="BoilerRoom"
count: datový typ Double, Hodnota=2
boilers: datový typ PmArray:
0. index: datový typ PmMap:
temperature: datový typ Double, Hodnota=36.3
power: datový typ Double, Hodnota=78
1. index: datový typ PmMap:
temperature: datový typ Double, Hodnota=12.6
power: datový typ Double, Hodnota=0