Uživatelské nástroje

Nástroje pro tento web


json

JSON

JSON (z anglického JavaScript Object Notation) je lehký, textový a člověkem čitelný formát pro výměnu a ukládání strukturovaných dat. Původně vznikl jako podmnožina jazyka JavaScript, dnes je však nezávislý na jakémkoli programovacím jazyce a podporován téměř všemi moderními technologiemi.

JSON se často používá pro:

  • komunikaci mezi klientem a serverem (např. v REST API),
  • konfigurační soubory,
  • ukládání nestrukturovaných nebo polostrukturovaných dat (např. v NoSQL databázích jako MongoDB).

Syntaxe a datové typy

JSON podporuje následující základní datové typy:

  • String – text uzavřený v dvojitých uvozovkách: `„Ahoj“`
  • Number – celá nebo desetinná čísla (bez uvozovek): `42`, `-3.14`, `1.23e5`
  • Boolean – logické hodnoty: `true`, `false`
  • Null – prázdná hodnota: `null`
  • Object – neuspořádaná množina dvojic klíč–hodnota (tzv. „mapa“ nebo „slovník“), uzavřená do složených závorek `{}`.
  • Array – uspořádaný seznam hodnot, uzavřený do hranatých závorek `[]`.

Důležité: V JSON musí být vždy použity dvojité uvozovky (`„`). Jednoduché uvozovky (`'`) nejsou platné.

Příklad JSON dokumentu

{
  "jmeno": "Jan",
  "prijmeni": "Novák",
  "vek": 32,
  "student": false,
  "email": null,
  "konicky": ["čtení", "běhání", "programování"],
  "adresa": {
    "ulice": "Náměstí Míru 123",
    "mesto": "Praha",
    "psc": "110 00",
    "zeme": "Česká republika"
  }
}

Pravidla syntaxe JSON

  • Klíče (názvy vlastností) musí být řetězce v dvojitých uvozovkách.
  • Hodnoty mohou být libovolného platného JSON typu.
  • Čárky oddělují jednotlivé prvky (v poli) nebo dvojice klíč–hodnota (v objektu).
  • Na konci posledního prvku v objektu nebo poli nesmí být čárka (tzv. „trailing comma“ – není v základním JSON povolena, i když některé knihovny ji tolerují).
  • Komentáře nejsou v oficiálním JSON standardu podporovány.

Nesprávný JSON (běžné chyby):

{
  'jmeno': 'Jan',       // ❌ Jednoduché uvozovky
  vek: 32,              // ❌ Klíč bez uvozovek
  konicky: ["a", "b",], // ❌ Čárka na konci pole
  // komentář          // ❌ Komentáře nejsou povoleny
}

Výhody a nevýhody

Výhody Nevýhody
Čitelnost – snadno čitelný jak pro lidi, tak pro stroje. Žádné komentáře – nelze přidávat poznámky do konfiguračních souborů.
Lehký a kompaktní – menší objem než XML. Duplikace klíčů – v objektu mohou být teoreticky duplicitní klíče (standard říká, že by měly být ignorovány – nebezpečné pro bezpečnost).
Široká podpora – všechny moderní jazyky mají vestavěnou podporu (např. `JSON.parse()` v JavaScriptu, `json` modul v Pythonu). Žádná kontrola schématu v základu – bez validace může být struktura nekonzistentní (řeší se pomocí JSON Schema).
Hierarchická struktura – ideální pro vnořená data. Bez typové bezpečnosti – např. číslo a řetězec se liší jen uvozovkami, což může vést k chybám.

Použití v praxi

  • Webová API: Většina REST API vrací data ve formátu JSON (např. `Content-Type: application/json`).
  • Konfigurační soubory: Např. `package.json` v Node.js, `tsconfig.json` v TypeScriptu.
  • NoSQL databáze: MongoDB, CouchDB a Firebase ukládají data jako JSON dokumenty.
  • Ukládání dat v aplikacích: Mnoho desktopových i mobilních aplikací používá JSON pro lokální ukládání nastavení nebo dat.

Příklad v JavaScriptu:

const data = JSON.parse('{"jmeno":"Jan","vek":32}');
console.log(data.jmeno); // "Jan"
 
const jsonStr = JSON.stringify(data);
// Vrátí: '{"jmeno":"Jan","vek":32}'

Příklad v Pythonu:

import json
 
data = {"jmeno": "Jan", "vek": 32}
json_str = json.dumps(data, ensure_ascii=False)
# Výstup: {"jmeno": "Jan", "vek": 32}
 
obj = json.loads('{"jmeno": "Eva"}')
print(obj["jmeno"])  # "Eva"

Standardy a specifikace

  • RFC 8259 – oficiální specifikace JSON (nahrazuje původní RFC 7159).
  • MIME typ: `application/json`
  • Přípona souboru: `.json`
  • Kódování: JSON musí být v kódování UTF-8, UTF-16 nebo UTF-32, přičemž UTF-8 je doporučeno.

Rozšíření a nástroje

  • JSON5 – rozšíření JSON s podporou komentářů, jednoduchých uvozovek, trailing čárek atd. (není kompatibilní s čistým JSON).
  • JSON Schema – jazyk pro popis a validaci struktury JSON dat.
  • jq – příkazový nástroj pro filtrování a transformaci JSON v terminálu.
  • YAML – alternativní formát, který je člověkem ještě lépe čitelný, ale složitější.

Bezpečnostní rizika

  • JSON injection – pokud se data z JSON nevalidují, mohou být použita k útokům (např. XSS).
  • Prototype pollution – v JavaScriptu může škodlivý JSON manipulovat s vlastnostmi objektů (zejména při použití `JSON.parse()` s nebezpečnými knihovnami).
  • Únik dat – konfigurační soubory `.json` často obsahují citlivé údaje (API klíče, hesla) – nikdy je neukládej do veřejných repozitářů!

Související pojmy

Externí odkazy

Viz také

json.txt · Poslední úprava: autor: admin