JSON
Rozšíření | .json |
---|---|
Typ MIME | application/json |
PUID | fmt / 817 |
Vyvinul | Douglas Crockford |
Počáteční verze | 2002 |
Typ formátu | Text |
Na základě | Javascript |
Standard | RFC-8259 a ECMA-404 |
Specifikace | Otevřený formát |
webová stránka | json.org/json-fr.html |
JavaScript Object Notation (JSON) jetextovýdatový formátodvozený odobjektovénotacejazykaJavaScript. Umožňuje vám reprezentovat strukturované informace, jak to umožňujenapříkladXML . vytvořenýDouglasem Crockfordem vletech 2002 až 2005, prvním standardem JSON je ECMA-404, který byl publikován v říjnu 2003, v současné době je popsán dvěma konkurenčními standardy:RFC 8259 zIETFa ECMA 404 zECMA.
Nejnovější verze specifikací formátu je prosince 2017.
Knihovny pro formát JSON existují ve většině programovacích jazyků.
Dokument JSON se skládá ze dvou typů konstrukčních prvků:
Tyto stejné prvky představují tři typy dat:
Příklad dat ve formátu JSON:
{ "menu": { "id": "file", "value": "File", "popup": { "menuitem": [ { "value": "New", "onclick": "CreateNewDoc()" }, { "value": "Open", "onclick": "OpenDoc()" }, { "value": "Close", "onclick": "CloseDoc()" } ] } } }Ekvivalent formátu XML :
<menu id="file" value="File"> <popup> <menuitem value="New" onclick="CreateNewDoc()"/> <menuitem value="Open" onclick="OpenDoc()"/> <menuitem value="Close" onclick="CloseDoc()"/> </popup> </menu> menu: id: file value: File popup: menuitem: - value: New onclick: CreateNewDoc() - value: Open onclick: OpenDoc() - value: Close onclick: CloseDoc()Šest základních typů formátu JSON je:
Podle definice je JSON formát pro výměnu dat . Proto RFC nepřipouští komentáře (které jsou ze své podstaty metadata ( metadata) ). Tyto analyzátory JSON přísné generovat výjimku , když se setkají s nečekanou znak podle specifikace (as /of //nebo /*právě začínající komentáře JavaScript).
Existují iniciativy formátů, které přetěžují JSON, aby bylo možné přidávat komentáře (například Hjson for Human JSON v angličtině) a software umožňující vykreslit z těchto odvozených formátů JSON v čistém a přísném formátu. Protože však tyto soubory pak vyžadují další krok, než je bude možné číst standardním interpretem JSON, mírně ztratí svou snadnou interoperabilitu .
Vždy můžeme přidat vlastnost objektu představovaného JSONem, pojmenovat jej „_comment“ (rozšiřující použití) a do pole hodnoty vložit text (komentář):
{ "_comment": "Imported from Wikidata 2015-05-27 10:13.", "QID": "Q5502001", "label": "Adèle", "description": "late 18th century, early 19th century French brig" }Během vývoje formátu, David Crockford si všiml, že některé z prvních uživatelů JSON přidali komentáře s cílem poskytnout pokyny k analyzátoru, stejně jako pokyny #ifdefnebo #definena C preprocesoru . Vidí je jako nebezpečí pro interoperabilitu, jako prioritu formátu, a rozhodne se je stáhnout. V roce 2012 vysvětlil svůj výběr a uznal, že si je vědom smutku uživatelů, že nemohou tyto soubory komentovat.
Tyto typy dat jsou dostatečně obecné a abstraktní, aby byly na jedné straně schopné být zastoupeny v jakémkoli programovacím jazyce a na druhé straně mohly být zastoupeny jakékoli konkrétní údaje.
Hlavní výhodou JSON je, že je snadno implementovatelný vývojářem a přitom stále komplexní.
Výhody:
JSON může představovat pouze několik obecných typů a není možné přidat další. Například pro data nebo barvy musíme najít reprezentace ve formě řetězců znaků. To je jeho hlavní rozdíl od jazyka, jako je XML , kde jsou data typována a rozšiřitelná za cenu větší složitosti.
Toto slabé psaní oslabuje zabezpečení a spolehlivost jazyka; například pro celočíselné hodnoty neexistuje žádný pevný limit, záleží na tlumočníkovi.
Z praktičtějšího hlediska nemohou existovat žádné komentáře, což je nepříjemné při použití souborů JSON v konfiguraci. Některé knihovny přijímají komentáře ve formátu JavaScript.
[není neutrální]Ačkoli používá notaci JavaScriptu , JSON je nezávislý na programovacím jazyce (několik desítek programovacích jazyků má integrovaný JSON). JSON se používá ke komunikaci aplikací v heterogenním prostředí. Používá se zejména jako jazyk přenosu dat AJAX a webovými službami . Jsou možná i jiná řešení, jako je XML . K přenosu přes protokol HTTP se používá typ MIME aplikace / json .
Pokud jde o JavaScript, dokument JSON představuje objekt, proto jeho název. Je proto potenciálně snazší interpretovat než XML, což bude vyžadovat použití technik, které jsou často těžší než přímý přístup, jako je hierarchický průchod stromu DOM představovaný celým dokumentem.
Může být také použit pro:
V JavaScriptu je snadné vyhodnotit výraz JSON, aby se z něj stal nativní objekt:
var donnees = eval('('+donnees_json+')');Tato metoda má však rizika, protože řetězec znaků donnees_jsonmůže obsahovat jakýkoli kód JavaScriptu . Existuje bezpečnější metoda, která spočívá v analýze syntaxe znakového řetězce donnees_json, jediného řešení dostupného v jiných programovacích jazycích, s výjimkou Pythonu , syntaxe JSON odpovídající jejím dvěma hlavním typům: seznamům a slovníkům.
Od roku 2009 začaly prohlížeče integrovat nativní podporu pro formát JSON. To usnadňuje jeho zpracování, zabezpečení (proti vyhodnocení škodlivých skriptů obsažených v řetězci JSON) a rychlost zpracování. Prohlížeče Firefox 3.5, IE 8 nebo Opera 10.5 jej tedy integrují nativně.
Vyhodnocení výrazu JSON v JavaScriptu za účelem jeho transformace na objekt se poté provede následujícím způsobem:
var donnees = JSON.parse(donnees_json);Různé knihovny javascriptů podporují starší prohlížeče s podobnou syntaxí.
JSONP nebo JSON-P (pro JSON s polstrováním , ve francouzštině „JSON avec formage“) je přípona, ve které je uveden název návratové funkce. Původní myšlenka vychází z blogu Boba Ippolita v roce 2005 a je nyní populární v aplikacích Web 2.0 , jako je například sada nástrojů pro aplikace Google . Vylepšení se plánují přidávat k tomu argumenty.
JSONP používá značky skriptu, hovory jsou otevřené. JSONP tedy nemusí být vhodný k předávání důvěrných informací.
JSON5 je rozšíření syntaxe JSON, jehož cílem je obejít omezení druhé.
SpecifikaceHJSON je rozšíření syntaxe JSON, které slouží stejnému účelu jako JSON5 (viz výše).
Specifikace