JSON (JavaScript Object Notation) je standardni, lahek tekstovni format za izmenjavo podatkov med različnimi sistemi, strežniki, brskalniki in mikrokrmilniki. Zaradi svoje preprostosti je enostaven za branje človeku ter izjemno hiter za strojno obdelavo. V tem članku si bomo ogledali sintakso, podprte tipe ter praktično uporabo v JavaScriptu, PHP-ju, MySQL-u in mikrokrmilnikih ESP/Arduino.
Podprti podatkovni tipi v JSON formatu
JSON podpira omejen, a univerzalen nabor podatkovnih tipov, ki jih prepoznajo praktično vsi programski jeziki.
| Podatkovni tip | Opis formata | Primer zapisa |
|---|---|---|
| Niz (String) | Besedilo v obveznih dvojnih narekovajih | "Senzor 1" |
| Število (Number) | Celo ali realno število brez narekovajev | 42 ali 23.4 |
| Logična vrednost (Boolean) | Resnično ali neresnično stanje | true ali false |
| Tabela (Array) | Urejen seznam vrednosti v oglatih oklepajih | [21.5, 22.0, 21.8] |
| Objekt (Object) | Pari ključ-vrednost v zavitih oklepajih | {"prostor": "Delavnica"} |
| Prazen (Null) | Predstavlja odsotnost vrednosti | null |
Primer strukturiranega JSON zapisa
Spodnji primer prikazuje veljaven JSON objekt, ki združuje več različnih podatkovnih tipov za opis stanja naprave.
{
"naprava": "Senzor Dnevna Soba",
"id": 104,
"aktivno": true,
"meritve": [21.5, 22.0, 21.8],
"lokacija": {
"prostor": "Dnevna soba",
"nadstropje": 1
},
"opomba": null
}
Uporaba JSON-a v JavaScriptu in PHP-ju
V brskalniku podatke enostavno pretvarjamo z vgrajenim objektom JSON ter funkcijo fetch(), na strežniku pa jih PHP obdela za REST API odzive.
// --- JAVASCRIPT: Pretvorba in branje podatkov ---
const uporabnik = { ime: "Borut", vloga: "admin" };
const jsonNiz = JSON.stringify(uporabnik); // Iz objekta v niz
const prejetiPodatki = '{"temperatura": 23.4, "vlaga": 55}';
const meritev = JSON.parse(prejetiPodatki); // Iz niza v JS objekt
console.log(meritev.temperatura); // Izpis: 23.4
<?php
// --- PHP: Sprejem in vračanje JSON odziva ---
header('Content-Type: application/json; charset=utf-8');
$vhodniPodatki = file_get_contents('php://input');
$podatki = json_decode($vhodniPodatki, true);
$odziv = [
"status" => "uspeh",
"cas" => date("Y-m-d H:i:s"),
"rezultati" => [
["id" => 1, "naziv" => "Rele 1", "stanje" => true],
["id" => 2, "naziv" => "Rele 2", "stanje" => false]
]
];
echo json_encode($odziv, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
?>
Pogoste napake pri delu z JSON-om
Pri ročnem oblikovanju ali generiranju JSON niza se pogosto pojavijo tipične sintaktične napake:
- Enojni narekovaji: JSON zahteva izključno dvojne narekovaje (
"). Uporaba enojnih narekovajev (') je neveljavna. - Viseče vejice (Trailing commas): Za zadnjim elementom v polju ali objektu ne sme biti vejice.
- Komentarji: JSON standard ne podpira komentarjev (kot sta
//ali/* */). - Neveljavni kontrolni znaki: Posebni znaki (npr. narekovaji znotraj niza ali nove vrstice) morajo biti ustrezno ubežani (
\",\n).