• popis json. JavaScript - JSON a metody pro práci s ním. Jednoduchý příklad dat JSON

    JSON je textový formát pro zápis dat. Umožňuje prezentovat v textové podobě jak jedno číslo nebo řetězec, tak složité struktury, například pole s daty. Použití tohoto formátu záznamu je pohodlné, protože je čitelný a intuitivní a zároveň umožňuje ukládat velmi složité datové struktury. Je také kompaktnější než xml, takže podle mého názoru je vhodnější pro výměnu dat mezi webovým prohlížečem a serverem.

    Syntaxe JSON s příklady

    Formát json je obvykle napsán ve 2 verzích:

    1. Posloupnost hodnot. Například sekvence 10, 15 a „test“ ve formátu JSON by vypadaly takto:

    2. Záznam ve formě párů klíč:hodnota. Například:

    ("Jméno": "Ivanov Sergey", "Datum narození": "03/09/1975")

    Trochu složitější příklad:

    ( "Jméno" : "Ivanov Sergey", "Adresa" : ( "Město" : "Moskva", "Ulice": "Pjatnickaja", "Dům": "35") ) )

    PHP funkce pro práci s formátem JSON

    V jazyce php od verze 5.2. jsou pouze 4 funkce:

    • json_decode – dekóduje řetězec JSON (získá data z řetězce formátu json)
    • json_encode – Vrátí JSON reprezentaci dat (převede data na řetězec json)
    • json_last_error_msg – Vrátí řetězec s chybovou zprávou posledního volání json_encode() nebo json_decode()
    • json_last_error – Vrátí poslední chybu

    V zásadě se většinou používají pouze dvě funkce: json_encode a json_decode . Nebudu zabíhat do podrobností o jejich syntaxi, pro více podrobností se můžete podívat na php.net. Příklad použití:

    $arr1 = pole(0,1,2); $json_str = json_encode($arr1); echo $json_str; // výstup json string: $arr2 = json_decode($json_str); echo $arr2; // výstup: 1

    Upozornění: při kódování dat ve formátu JSON v ruštině funkce json_encode převádí ruské znaky na Unicode, tzn. nahradí je \uXXXX a řetězec json se tak stane pro člověka nečitelným (ale srozumitelným pro prohlížeč). Pokud nechcete převádět do Unicode (například při ladění kódu), můžete jednoduše použít volbu JSON_UNESCAPED_UNICODE.

    Můžete také použít JSON_UNESCAPED_SLASHES a JSON_NUMERIC_CHECK, abyste se vyhnuli přidávání lomítek pro escapování během kódování a kódování řetězců s čísly jako čísly. V důsledku toho, aby byl řetězec json čitelný pro člověka, uděláme například takto:

    $arr = array("fio" => "Ivanov Sergej", "věk" => "32", "vk_url" => "https://vk.com/id11111"); echo json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);

    Bez těchto možností by řádek byl:

    ( "fio" : "\u0418\u0432\u0430\u043d\u043e\u0432 \u0421\u0435\u0440\u0433\u0435\u0439", "věk": "32", "vk_/url" /vk.com\/id11111" )

    a pomocí voleb získáme čitelný řetězec:

    ( "fio" : "Ivanov Sergey", "věk" : 32, "vk_url" : "https://vk.com/id11111" )

    Ještě jedna věc: pokud chcete, aby funkce json_decode při dekódování řetězce json vracela přesně pole, stačí přidat druhý parametr k funkci rovný true.

    $json_str = "( "a":1, "b":2, "c":3)"; $obj = json_decode($json_str); // get object echo $obj->a; // vypíše 1 $arr = json_decode($json_str, true); // získání asociativního pole echo $arr["a"]; // vytiskne 1

    Tím končí přehled funkcí php.

    JavaScriptové funkce pro práci s formátem JSON

    Začněme tím, že formát JSON byl původně vynalezen pro jazyk JavaScript a poté se stal pouze samostatným textovým formátem používaným v různých jazycích. Zjevně je tedy syntaxe JSON velmi podobná syntaxi pro zápis běžných objektů a polí.

    // příklad pole JavaScript arr = ; upozornit(arr); // zobrazí 1 // Příklad objektu v JavaScriptu obj = ( "name": "Vasya", "age": 35, "isAdmin": false ) alert(obj.name); // zobrazí "Vasya"

    Funkce JavaScriptu používané pro převod do a z formátu JSON:

    • JSON.parse - dekódování řetězce JSON (převod řetězce na objekty a/nebo pole)
    • JSON.stringify – vrací JSON reprezentaci dat (převod objektů a/nebo polí na řetězec json)

    Jednoduchý příklad dekódování řetězce json do pole s čísly:

    Str = ""; arr = json parse(str); upozornit(arr); // vytiskne 1

    Příklad převodu (serializace) objektu na řetězec JSON:

    Obj = ( "jméno": "Vasya", "věk": 35, "isAdmin": false ) alert(JSON.stringify(obj)); // zobrazí ("name":"Vasya","age":35,"isAdmin":false)

    Při serializaci (převodu) objektu na řetězec JSON se zavolá metoda toJSON objektu, pokud existuje. Pokud neexistuje žádná metoda, jsou uvedeny všechny vlastnosti objektu. Příklad převodu objektu pomocí metody toJSON:

    Obj = ( "name": "Vasya", "age": 35, "isAdmin": false, toJSON: function() ( return this.age; ) ) alert(JSON.stringify(obj)); // vytiskne 35

    Příklady praktického využití formátu JSON

    Ve skutečnosti osobně používám formát JSON ve 2 hlavních situacích:

    1. Přenos dat mezi prohlížečem a serverem pomocí požadavků Ajax.

    Máme například stránku, na které potřebujeme aktualizovat data, aniž bychom stránku znovu načítali. Řekněme, že potřebujete informace se seznamem zaměstnanců a jejich daty, které mají být „načteny“ ze serveru.

    V JavaScriptu pomocí jQuery to zjednodušujeme a zobrazujeme data ve formě tabulky v prohlížeči:

    $.getJSON("get-info.php").success(function(data) ( // požadavek ajax, data ze serveru budou zapsána do datové proměnné htmlstr = "

    "; for (var i=0; i "Ivanov Sergey", "narozeniny" => "03/09/1975"); $user_info = pole ("fio" => "Aleksey Petrov", "narozeniny" => " 09/18. 1983"); echo json_encode($user_info); exit;

    V tomto příkladu byl řetězec JSON, který byl předán ze serveru do prohlížeče:

    [("fio":"Ivanov Sergey","narozeniny":"03/09/1975"),("fio":"Petrov Alexey","narozeniny":"09/18/1983")]

    Záměrně jsem neukazoval čáru ve formě "stromu", protože v této podobě se přenáší. A jak jistě oceníte, zápis dat JSON je velmi kompaktní, což znamená, že přenos těchto dat ze serveru do prohlížeče bude téměř okamžitý.

    2. Zápis složitých datových struktur do databáze.

    Někdy nastávají situace, kdy není vhodné spouštět v databázi jinou tabulku za účelem uložení jiných dat. Řekněme, řekněme, že uživatel registrovaný na webu má možnost provést nastavení barvy pozadí a barvy textu.

    Místo spouštění další tabulky kvůli 2 nastavením můžete v tabulce jednoduše vytvořit textový sloupec se seznamem uživatelů, do kterého umístíte data uživatelských nastavení. Požadavek na aktualizaci nastavení by pak mohl vypadat například takto:

    AKTUALIZOVAT nastavení uživatele SET = "("background-color":"#FFFFFF", "text-color":"#000000")" WHERE user_id = 10

    V budoucnu, po obdržení informací z tabulky uživatelů, je php skript může snadno změnit zpět na pole s nastavením. Pokud například proměnná $user_info obsahuje data získaná pro uživatele z tabulky users, je získání pole s nastavením velmi jednoduché:

    $settings = json_decode($user_info["nastaveni"], true); echo "Background color = ".$settings["background-color"]; echo "Text color = ".$settings["text-color"];

    Ve formátu JSON můžete také například zapsat do databáze, jaké možnosti produktu si kupující zvolil.

    ("15":["45","47"], "18":"52") // možnost 15 je nastavena na 45 a 47 a možnost 18 je nastavena na 52

    V zásadě můžete dokonce celý obsah košíku zapsat ve formátu JSON, například takto:

    ( "user_id" : 10, "session_id" : "2c2l3h4ii271aojentejtdcmh3", "products": [ ( "product_id" : 15, "options" : ( "15" : , "18" : 52 ), "množství" : 1, "price" : 1500 ), ( "product_id" : 16, "options" : ( "15" : , "18" : 51 ), "quantity" : 2, "price" : 1000) ])

    V normálním zobrazení bez stromu by tento řetězec JSON vypadal takto:

    ("user_id":10,"session_id":"2c2l3h4ii271aojentejtdcmh3","products":[("product_id":15,"options":("15":,"18":52),,"množství":1, "price":1500),("product_id":16,"options":("15":,"18":51),,"quantity":2,"price":1000)])

    Jak tedy můžete vidět z příkladů, téměř jakákoliv informace může být uložena a přenášena ve formátu JSON.

    O JSON jste už určitě slyšeli. Co je to? Co umí a jak se dá využít?

    V této lekci probereme základy JSON a probereme následující body:

    • Co je JSON?
    • K čemu se používá JSON?
    • Jak vytvořit řetězec JSON?
    • Jednoduchý příklad řetězce JSON.
    • Porovnejme JSON a XML.
    • Jak pracovat s JSON v JavaScriptu a PHP?
    Co je JSON?

    JSON je jednoduchý textový způsob ukládání a komunikace strukturovaných dat. S jednoduchou syntaxí můžete snadno uložit cokoli od jednoho čísla po řetězce, pole a objekty v prostém textu. Můžete také propojit pole a objekty dohromady a vytvořit tak složité datové struktury.

    Jakmile je řetězec JSON vytvořen, je snadné jej odeslat do jiné aplikace nebo na jiné místo v síti, protože se jedná o prostý text.

    JSON má následující výhody:

    • Je kompaktní.
    • Jeho věty jsou snadno čitelné a složené jak člověkem, tak počítačem.
    • Lze jej snadno převést na datovou strukturu pro většinu programovacích jazyků (čísla, řetězce, booleany, pole atd.)
    • Mnoho programovacích jazyků má funkce a knihovny pro čtení a vytváření struktur JSON.

    Název JSON znamená JavaScript Object Notation (reprezentace objektů JavaScriptu). Jak název představuje, je založen na způsobu definování objektů (velmi podobné vytváření asociativních polí v jiných jazycích) a polí.

    K čemu se používá JSON?

    Nejběžnějším použitím JSON je odesílání dat ze serveru do prohlížeče. Data JSON se obvykle doručují pomocí technologie AJAX, která umožňuje prohlížeči a serveru vyměňovat si data, aniž by bylo nutné stránku znovu načítat.

  • Uživatel klikne na miniaturu produktu v internetovém obchodě.
  • JavaScript spuštěný v prohlížeči vytvoří požadavek AJAX na skript PHP spuštěný na serveru a předá mu ID vybraného produktu.
  • PHP skript získá název produktu, popis, cenu a další informace z databáze. Z dat pak sestaví řetězec JSON a odešle jej do prohlížeče.
  • JavaScript spuštěný v prohlížeči přijme řetězec JSON, dekóduje jej a zobrazí informace o produktu na stránce pro uživatele.
  • JSON můžete také použít k odesílání dat z prohlížeče na server předáním řetězce JSON jako parametru v požadavcích GET nebo POST. Tato metoda je však méně běžná, protože předávání dat prostřednictvím požadavků AJAX lze zjednodušit. Například ID produktu může být zahrnuto do adresy URL jako součást požadavku GET.

    Knihovna jQuery má několik metod, jako je getJSON() a parseJSON() , které usnadňují načítání dat pomocí JSON prostřednictvím požadavků AJAX.

    Jak vytvořit řetězec JSON?

    Existuje několik základních pravidel pro vytvoření řetězce JSON:

    • Řetězec JSON obsahuje buď pole hodnot, nebo objekt (asociativní pole párů název/hodnota).
    • pole je uzavřeno v hranatých závorkách ([ a ]) a obsahuje seznam hodnot oddělených čárkami.
    • Objekt je uzavřen ve složených závorkách (( a )) a obsahuje čárkami oddělený seznam párů název/hodnota.
    • dvojice jméno/hodnota sestává z názvu pole uzavřeného do dvojitých uvozovek, za nímž následuje dvojtečka (:) a hodnota pole.
    • Význam v poli nebo objektu může být:
      • Číslo (celé číslo nebo s plovoucí desetinnou čárkou)
      • Řetězec (ve dvojitých uvozovkách)
      • Booleovská hodnota (true nebo false)
      • Další pole (uzavřené v hranatých závorkách)
      • Další objekt (uzavřený ve složených závorkách)
      • nulová hodnota

    Chcete-li do řetězce vložit dvojité uvozovky, musíte použít zpětné lomítko: \" . Stejně jako v mnoha programovacích jazycích můžete do řetězce vložit řídicí znaky a hexadecimální kódy tak, že je předáte zpětným lomítkem. Podrobnosti najdete na webu JSON.

    Jednoduchý příklad řetězce JSON

    Následuje příklad pokladny ve formátu JSON:

    ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-mail chráněný]", "contents": [ ( "productID": 34, "productName": "Super produkt", "quantity": 1), ( "productID": 56, "productName": "zázračný produkt", "množství": 3) ], "orderCompleted": true )

    Podívejme se na řádek podrobně:

    • Objekt vytvoříme pomocí složených závorek (( ​​a )).
    • V objektu je několik párů název/hodnota: "orderID": 12345 Vlastnost s názvem "orderId" a celočíselnou hodnotou 12345 "shopperName": "Vanya Ivanov" vlastnost s názvem "shopperName" a hodnotou řetězce "Vanya Ivanov" "shopperEmail" : " [e-mail chráněný]" Vlastnost s názvem "shopperEmail" s hodnotou řetězce " [e-mail chráněný]" "contents": [ ... ] Vlastnost s názvem "contents", jejíž hodnota je pole "orderCompleted": true Vlastnost s názvem "orderCompleted" s booleovskou hodnotou true
    • V poli „contents“ jsou 2 objekty představující řádkové položky v objednávce. Každý objekt obsahuje 3 vlastnosti: productID , productName a množství .

    Mimochodem, protože JSON je založen na deklarování objektů JavaScriptu, můžete z výše uvedeného řetězce JSON rychle a snadno vytvořit objekt JavaScriptu:

    var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-mail chráněný]", "contents": [ ( "productID": 34, "productName": "Super produkt", "quantity": 1), ( "productID": 56, "productName": "zázračný produkt", "množství": 3 ) ], "objednávka dokončena": true );

    Porovnání JSON a XML

    JSON můžete v mnoha ohledech považovat za alternativu k XML, alespoň v oblasti webových aplikací. Koncept AJAX byl původně založen na použití XML pro přenos dat mezi serverem a prohlížečem. Ale v posledních letech je JSON stále populárnější pro přenos dat AJAX.

    Zatímco XML je osvědčená technologie, která byla použita v nemalém počtu aplikací, JSON má výhodu kompaktnějšího a snáze rozpoznatelného formátu dat.

    Výše uvedený příklad objektu XML by vypadal takto:

    orderID 12345 shopperName Vanya Ivanov shopperEmail [e-mail chráněný] obsah productID 34 productName Super Množství produktu 1 ProductID 56 ProductName Super Množství produktu 3 objednávkaSplněno pravda

    Verze XML je výrazně větší. Ve skutečnosti má 1128 znaků, zatímco varianta JSON má pouze 323 znaků. Verze XML je také těžko srozumitelná.

    Samozřejmě, toto je radikální příklad. A je možné vytvořit kompaktnější položku XML. Ale i to bude výrazně delší než ekvivalent JSON.

    Práce s řetězcem JSON v JavaScriptu

    JSON má jednoduchý formát, ale ruční vytváření řetězce JSON je docela zdlouhavé. Navíc často potřebujete vzít řetězec JSON, převést jeho obsah na proměnnou, kterou lze použít v kódu.

    Většina programovacích jazyků má nástroje pro snadný převod proměnných na řetězce JSON a naopak.

    Vytvořte řetězec JSON z proměnné

    JavaScript má vestavěnou metodu JSON.stringify(), která přebírá proměnnou a vrací řetězec JSON představující její obsah. Vytvořme například objekt JavaScript, který obsahuje podrobnosti objednávky z našeho příkladu, a poté z něj vytvořte řetězec JSON:

    var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-mail chráněný]", "contents": [ ( "productID": 34, "productName": "Super produkt", "quantity": 1), ( "productID": 56, "productName": "zázračný produkt", "množství": 3 ) ], "orderCompleted": true ); alert(JSON.stringify(cart));

    Tento kód poskytne:

    Všimněte si, že metoda JSON.stringify() vrací řetězec JSON bez mezer. Je hůře čitelný, ale pro přenos po síti je kompaktnější.

    Existuje několik způsobů, jak analyzovat řetězec JSON v JavaScriptu, ale nejbezpečnější a nejspolehlivější je použít vestavěnou metodu JSON.parse(). Vezme řetězec JSON a vrátí objekt nebo pole JavaScriptu, které obsahuje data. Například:

    var jsonString = " \ ( \ "ID objednávky": 12345, \ "název nakupujícího": "Vanya Ivanov", \ "e-mail nakupujícího": " [e-mail chráněný]", \ "contents": [ \ ( \ "productID": 34, \ "productName": "Super produkt", \ "množství": 1 \ ), \ ( \ "productID": 56, \ "productName": "Zázračný produkt", \ "množství": 3 \ ) \ ], \ "objednávka dokončena": pravda \ ) \ "; var cart = JSON.parse(jsonString); alert(cart.shopperEmail); alert(cart.contents.productName);

    Vytvořili jsme proměnnou jsonString, která obsahuje řetězec JSON z našeho příkladu objednávky. Tento řetězec pak předáme metodě JSON.parse(), která vytvoří objekt obsahující data JSON a uloží je do proměnné košíku. Zbývá jen otestovat vytištěním vlastností objektu shopperEmail a productName pole obsahu.

    V důsledku toho získáme následující výstup:

    Ve skutečné aplikaci váš kód JavaScript obdrží objednávku jako řetězec JSON v odpovědi AJAX ze skriptu serveru, předá řetězec metodě JSON.parse() a poté použije data k zobrazení na stránce uživatele.

    JSON.stringify() a JSON.parse() mají další možnosti, jako je použití funkcí zpětného volání k vlastní konverzi určitých dat. Tyto možnosti jsou velmi užitečné pro převod různých dat na platné objekty JavaScriptu.

    Práce s řetězcem JSON v PHP

    PHP, stejně jako JavaScript, má vestavěné funkce pro práci s řetězci JSON.

    Vytvořte řetězec JSON z proměnné PHP

    Funkce json_encode() přebírá proměnnou PHP a vrací řetězec JSON představující obsah proměnné. Zde je náš příklad objednávky napsaný v PHP:

    Tento kód vrací přesně stejný řetězec JSON jako v příkladu JavaScriptu:

    ("orderID":12345,"shopperName":"Vanya Ivanov","shopperEmail":" [e-mail chráněný]","contents":[("productID":34,"productName":"Super produkt","quantity":1),("productID":56,"productName":"Wonder Product","quantity": 3)],"orderCompleted":true)

    Ve skutečné aplikaci váš skript PHP odešle tento řetězec JSON jako součást odpovědi AJAX do prohlížeče, kde jej kód JavaScript pomocí metody JSON.parse() analyzuje zpět do proměnné, která se zobrazí na stránce uživatele. .

    Funkci json_encode() můžete předat různé příznaky jako druhý argument. S jejich pomocí můžete změnit principy kódování obsahu proměnných do řetězce JSON.

    Vytvořte proměnnou z řetězce JSON

    Metoda json_decode() se používá k převodu řetězce JSON na proměnnou PHP. Nahraďte náš příklad JavaScriptu metodou JSON.parse() kódem PHP:

    Pokud jde o JavaScript, tento kód vytvoří:

    [e-mail chráněný] zázračné zboží

    Ve výchozím nastavení vrací funkce json_decode() objekty JSON jako objekty PHP. Existují obecné objekty PHP třídy stdClass . Proto používáme -> pro přístup k vlastnostem objektu ve výše uvedeném příkladu.

    Pokud potřebujete objekt JSON ve formě přidruženého pole PHP, musíte funkci json_decode() předat hodnotu true jako druhý argument. Například:

    $cart = json_decode($jsonString, true); echo $cart["shopperEmail"] . "
    "; echo $cart["contents"]["productName"] ."
    ";

    Tento kód vytvoří stejný výstup:

    [e-mail chráněný] zázračné zboží

    Funkci json_decode() můžete také předat další argumenty pro určení hloubky rekurze a způsobu zpracování velkých celých čísel.

    Závěr

    I když je JSON snadno pochopitelný a použitelný, je to velmi užitečný a flexibilní nástroj pro předávání dat mezi aplikacemi a počítači, zejména při použití AJAX. Pokud plánujete vývoj AJAX aplikace, pak není pochyb o tom, že JSON bude tím nejdůležitějším nástrojem ve vaší dílně.

    JSON (JavaScript Object Notation) je jednoduchý formát pro výměnu dat, který lze snadno číst a zapisovat jak lidmi, tak počítači. Je založen na podmnožině programovacího jazyka JavaScript, jak je definován ve standardu ECMA-262 3rd Edition – prosinec 1999. JSON je textový formát, který je zcela nezávislý na implementačním jazyce, ale používá konvence známé programátorům jazyků podobných C, jako jsou C, C++, C#, Java, JavaScript, Perl, Python a mnoho dalších. Tyto vlastnosti dělají z JSON ideální jazyk pro výměnu dat.

    JSON je založen na dvou datových strukturách:

    • Sbírka párů klíč/hodnota. V různých jazycích je tento koncept implementován jako objekt, záznam, struktura, slovník, hash, pojmenovaný seznam nebo asociativní pole.
    • Seřazený seznam hodnot. Ve většině jazyků je to implementováno jako pole, vektor, seznam nebo sekvence.

    Jedná se o obecné datové struktury. Téměř všechny moderní programovací jazyky je v nějaké formě podporují. Je logické předpokládat, že formát dat, nezávislý na programovacím jazyce, by měl být založen na těchto strukturách.

    V zápisu JSON to vypadá takto:

    Objekt je neuspořádaná sada párů klíč/hodnota. Objekt začíná ( otevírací složená závorka a končí ) uzavírající složenou závorkou. Za každým jménem následuje: dvojtečka, páry klíč/hodnota jsou odděleny, čárka.

    pole- uspořádaný soubor hodnot. Pole začíná [ otevírací hranatá závorka a končí ] uzavírací hranatou závorkou. Hodnoty jsou odděleny čárkou.


    Význam Možná tětiva ve dvojitých uvozovkách, číslo, pravda , nepravda , null , objekt nebo pole. Tyto struktury lze vnořovat.


    Čára je sbírka nula nebo více znaků Unicode, uzavřených do dvojitých uvozovek, používajících \ jako znak escape. Znak je reprezentován jako jeden znakový řetězec. Podobná syntaxe se používá v C a Javě.


    Číslo je reprezentován stejným způsobem jako v C nebo Javě, kromě toho, že se používá pouze desítková číselná soustava.


    Mezery lze použít mezi libovolnými tokeny.

    S výjimkou některých podrobností o kódování výše uvedené popisuje jazyk jako celek.


    Proměnné, pole a objekty jsou známou a pohodlnou formou reprezentace dat. Je zvykem popisovat data v jazyce prohlížeče JavaScript, což není nutné v jazyce serveru PHP. Formát JSON umožňuje zobecnit je do jednoho celku a nezaměřovat se na programovací jazyk. V tomto případě jsou data převedena do dvojic: "název = hodnota". Hodnota v každém z nich může být také sbírkou takových párů.

    Je obvyklé spojovat JSON se složenými závorkami a to druhé je zcela oprávněné, protože JavaScriptový formát JSON = Object Notation. V posledních zvláště dynamických letech se mnohé změnilo. To, co bylo vytvořeno pro konkrétní účel, často přineslo nečekané výsledky nebo otevřelo nové obzory.

    Výměna dat: prohlížeč - server

    Technologie AJAX se stala tradiční, obvyklou obnovou stránky zcela přestal být populární. Návštěvník, který stránku otevře, zahájí sérii dílčích výměn dat, kdy se určité stránky změní pouze na místě, které je relevantní.

    Předpokládá se, že vzhled JSON je spojen s použitím AJAX, ale ve skutečnosti asociativní a jeho objektová notace (vlastnosti syntaxe pro popis a použití objektů) s JSON souvisí mnohem více než výměna dat mezi prohlížečem a server.

    Vzhledem k tomu, že obsah stránek moderních stránek se stal skutečně „masivním“ (volumetrickým), účinnost formátu pro výměnu dat se stala obzvláště důležitou. To neznamená, že se JSON stal novou reprezentací dat, ale skutečnost, že je již dlouho prvkem syntaxe JavaScriptu, je významná.

    Používání azbuky při pojmenovávání proměnných je velmi neočekávaný jev (nesmysl), ale funguje v nejnovějších verzích Chrome, Firefox a dokonce i Internet Explorer 11.

    Cyrilice a JSON

    Tento zcela neočekávaný jev byste samozřejmě neměli používat, pamatujte si, jak snadno se hodnoty proměnných napsaných ruskými písmeny změní na krakozyabry: co můžeme říci o jménech, zejména o externích.

    Je pochybné, že iniciativu v názvech v azbuce bude podporovat vnější prostředí prohlížeče, se kterým se neustále musí potýkat. Ale tato skutečnost si zaslouží pozornost z prostého důvodu, že formát JSON je schopnost psát názvy a hodnoty jakýmkoli způsobem, který vývojář chce. To je důležité, protože u každého problému popis rozsahu, jak to vyžaduje, značně zjednodušuje ladění a snižuje počet chyb.

    Nezáleží na tom, na čem syntaktická inovace vycházela – JSON, důležité je, že dávala zákonné právo a reálnou příležitost ke shodě: „jakékoli jméno = jakákoli hodnota“.

    Jazyku JavaScript musíme vzdát hold: to, co poskytuje syntaxe, vývojáře nezavazuje a nic mu neukládá. Vývojář volně používá syntaxi jazyka pro optimální tvorbu datového modelu a algoritmus pro jejich použití.

    PHP a JSON

    Server přijímá data ve formátu JSON a poskytuje (zejména prostřednictvím PHP) možnost je zpracovat tak, jak jsou, a vrátit výsledek zpět do prohlížeče v podobném formátu. Zdrojové pole PHP:

    • $cJSON = pole ("a"=> "alfa", "b"=> "beta", "g"=> "gama").

    Převod do formátu JSON pro předání do prohlížeče:

    • $cJS = json_encode($cJSON).

    Výsledek:

    • ("a":"alfa","b":"beta","g":"gama").

    Hnízdění zobrazené na fotografii je povoleno.

    Zde bylo vytvořené pole doplněno o nový prvek „do sebe“ s automatickým indexem „0“ a poté opět se zadaným indexem „z“.

    Json_decode() převede řetězec JSON na pole PHP. Podobných výsledků lze dosáhnout manipulací s funkcemi a funkcí explode(). V některých případech je tato možnost výhodnější.

    úroveň vnoření

    Prvky lze do sebe vnořovat jak na straně prohlížeče, tak na straně serveru. V praxi formát JSON (popsaný v RFC 4627) poskytuje více než 4 úrovně vnoření, ale tato schopnost by neměla být zneužívána.

    Nejlepší je nikdy nepřekračovat rozumnou dostatečnost, kód je díky tomu čitelný a usnadňuje ladění a pochopení pro ostatní vývojáře.

    JSON se obvykle označuje jako datové struktury, které jsou jednodušší než XML, srozumitelné lidem i počítačům. To platí, když je množství dat malé a vývojář správně zvolil úroveň vnoření. Ve všech ostatních případech je obtížné spočítat počet hranatých závorek a pochopit jak na straně prohlížeče, tak na straně serveru.

    soubory JSON

    Použití JSON v praxi se často neomezuje na krátký řetězec přístupný vnímání. Jakékoli datové konstrukce jsou vždy pragmatické. JSON lze přitom efektivně využít jak v reálných datech úkolu (zaměstnanci podniku), tak pro implementaci dočasných dat (objektová cache).

    Enterprise State a formát JSON: příklad

    Obvykle záznamem o jedné osobě je příjmení, jméno, patronymie, rok narození, specializace, vzdělání, ... a několik dalších jednoduchých hodnot. I ve zvlášť náročných firmách nepřesáhne rekord o jednom člověku tucet nebo dva obory. Toto je vjemové a může být umístěno do řádku databáze.

    Pokud firma zaměstnává několik lidí, je to jedna věc, ale pokud jde o desítky tisíc, je to něco úplně jiného. Databázi můžete nadále používat, ale její uložení jako soubor vypadá praktičtěji a snáze se používá.

    JSON je prostý textový soubor. Případ s personálem, v pořádku. Vždy si to můžete přečíst. Otevřít a upravit je také k dispozici v libovolném textovém editoru, který nemá ve zvyku přidávat své servisní informace k obsahu souboru. Obecně platí, že *.json je čistý text jak uvnitř prohlížeče, tak uvnitř souboru – řetězec.

    Fotografie ukazuje vyrovnávací paměť objektu, který tvoří obrázek, příklad.

    Toto je příklad obsahu souboru generovaného webem, který poskytuje barevný 3D tisk na hrnky a keramiku. Přirozeně, mít takový formát JSON, rozhodování o tom, jak ho otevřít, je opravdu problematické. V tomto a podobných případech však není problém se čtením souboru: PHP soubor přečte, analyzuje a předá prohlížeči. Data změněná návštěvníkem jsou vrácena na server a zapsána zpět.

    V tomto případě použití se soubor chová jako proměnná, která je uložena mimo kód. V případě potřeby obdrží proměnná hodnotu ze souboru, a pokud ji návštěvník změní v dialogu poskytnutém webem, všechny změny budou zaznamenány tak, jak jsou. Není třeba číst a kontrolovat obsah souboru.

    JSON se často používá k ukládání a používání informací o službách – nejedná se o personální tabulku, vývojář ani návštěvník webu ji nemusí vidět.

    XML a JSON

    „Všechno má svůj čas“ je klasická znalost, akceptovaná jako axiom ještě před příchodem programování. "Nic se nezdá jen tak" - to bylo také předtím, než člověk napsal první srozumitelný program v umělém jazyce.

    Datové formáty vycházejí ze skutečné potřeby a vycházejí ze získaných znalostí. HTML má svou vlastní cestu, XML má svou vlastní cestu a JSON je objektová logika JavaScriptu rozšířená do dalších jazyků. Srovnávat jeden s druhým není nejlepší věc. Každému, co jeho vlastní.

    XML si se svými úkoly poradí skvěle a zjevně se nezapíše do historie. A JSON se používal až do roku 2006, jen ne každý vývojář považoval za svou povinnost deklarovat určité možnosti prezentace svých dat.

    V praxi se vyskytly případy, kdy byly v BASICu napsány programy, které nepoužívaly JSON jako takový, ale dokonale uložené dvojice název = hodnota a zpřístupnily je správným algoritmům ve správný čas.

    Speciální znaky ("`", "~", "|", ...) a datové formáty

    Díky zvyku pracovat s asociativními poli a objekty v JavaScriptu je používání JSON přirozené a pohodlné. Toto je skutečně skvělý formát, ale schopnost rozdělovat a spojovat, manipulovat s řetězci a poli, má mnohem hlubší kořeny.

    Funkce join/split a PHP implode/explode umožňují pohodlně a efektivně používat jak datové formáty XML a JSON, tak i vaši vlastní verzi. Ten druhý je často lepší, zatímco první dva jsou ideální pro obecné případy použití. Pokud jsou informace přenášeny na jiného vývojáře, server, soubor nebo databázi, XML a JSON je lepší nenacházet. Všichni s nimi pracují, takže přenos / příjem informací nepotřebuje komentáře.

    Použití JSON v Androidu

    Čtení a zápis dat ve formátu JSON v Androidu není jen normou, ale existuje mnoho objektů, které jsou orientovány na práci s tímto konkrétním datovým formátem.

    Používá formát JSON. Možná je to pravda, ale otázka není ve fenomenalitě sociálních sítí, ale v tom, že prezentace informací ve formátu „jméno = hodnota“ je opravdu pohodlná jak pro programování, tak pro použití. Na rozdíl od přísného a notoricky známého „XML“ se jedná o skutečně lidsky přátelský formát.

    Asociativní pole

    Stalo se, že proměnné měly být popsány (JavaScript) nebo alespoň indikovat počáteční hodnotu (PHP). V obou případech může proměnná velmi snadno změnit svůj typ. V případě potřeby jazyk tuto transformaci provede automaticky.

    Proč by ale proměnná také nemohla změnit svůj název, objevit se během provádění algoritmu a zmizet, když už není potřeba? Asociativní pole tento problém řeší, ale když se použijí takové relativně dynamické proměnné, název pole a přidružené konstrukce syntaxe budou následovat tam, kde jsou použity.

    Tato okolnost je zvláště výrazná v PHP, ale můžete se s tím smířit, stejně jako se symbolem „$“ v názvu proměnné a kombinací „$this->“ uvnitř objektu. Při současném programování v JavaScriptu a PHP se ze začátku opravdu divíte, jak je všechno jinak, ale pak se vše stane tak známým a přirozeným...

    Asociativní pole -> JSON

    V tomto příkladu je dokument *.docx vytvořen pomocí knihovny PHPOffice/PHPWord a pole aProperties obsahuje vlastnosti dokumentu (autor, společnost, název, kategorie, datum vytvoření...).

    Druhé pole obsahuje data stránky:

    • orientace (na šířku nebo normální);
    • rozměry vertikálně a horizontálně;
    • výplň (levý, horní, dolní, pravý okraj);
    • záhlaví a zápatí.

    Dokument je generován na serveru, kde je nainstalována knihovna PHPOffice/PHPWord. Stránka poskytuje správu hodnot těchto polí pomocí JavaScriptu. Výsledek ve formátu JSON je vrácen zpět na server a použit v algoritmech PHP v jeho konstrukcích, tedy v polích.

    Dynamické proměnné

    Formát JSON řeší problém dynamických proměnných. Zde můžete vytvářet, upravovat a mazat proměnné bez zbytečného syntaktického nepořádku. Vypadá pěkně a používá se v JavaScriptu.

    V tomto příkladu funkce GetOjInfo() načte název hodnoty a hodnotu z objektu. Objekt řetězce JSON přiřazený k proměnné ojInfo má zpočátku tři prvky: jméno, věk a práci. O něco později je přidána proměnná Status.

    Po prvním příkazu delete ztratí řádek ojInfo prvek stáří, po druhém odstranění prvek práce. Pokud předpokládáme, že tento řádek je sbírkou proměnných, které mají určitý význam, pak pomocí JSON můžete skutečně vytvářet, měnit a mazat jakoukoli jejich sadu mimo operační pole (syntaxi) popisu a zpracování jazyka JavaScript.

    Formát JSON nebyl pro tuto možnost navržen, ale je to možné, praktické a pohodlné.

    Syntaxe JSON je podmnožinou syntaxe JavaScriptu.

    Pravidla syntaxe JSON

    Syntaxe JSON je odvozena ze syntaxe objektu zápisu JavaScriptu:

    • Data v párech název/hodnota
    • Údaje oddělené čárkami
    • Kudrnaté závorky drží předměty
    • Hranaté závorky obsahují pole
    JSON data – název a hodnota

    Data JSON se zapisují jako páry název/hodnota.

    Dvojice název/hodnota se skládá z názvu pole (ve dvojitých uvozovkách), za kterým následuje dvojtečka následovaná hodnotou:

    příklad

    "křestní jméno":"Jan"

    JSON názvy vyžadují dvojité uvozovky. Jména JavaScript nejsou.

    hodnoty JSON

    Hodnoty JSON mohou být:

    • Řada (celé číslo nebo plovoucí)
    • Řetězec (ve dvojitých uvozovkách)
    • Boolean (pravda nebo nepravda)
    • Pole (v hranatých závorkách)
    • Objekt (ve složených závorkách)
    objekty JSON

    Objekty JSON jsou psány ve složených závorkách.

    Stejně jako JavaScript mohou objekty JSON obsahovat více párů název/hodnota:

    příklad

    ("křestní jméno":"Jan", "lastName":"Laň")

    Pole JSON

    Pole JSON se zapisují do hranatých závorek.

    Stejně jako JavaScript může pole JSON obsahovat více objektů:

    příklad

    "zaměstnanci":[

    ("firstName":"Peter","lastName":"Jones")
    ]

    Ve výše uvedeném příkladu je objektem "zaměstnanci" pole obsahující tři objekty. Každý objekt je záznamem osoby (se jménem a příjmením).

    JSON používá syntaxi JavaScriptu

    Protože syntaxe JSON je odvozena od zápisu objektu JavaScriptu, je pro práci s JSON v JavaScriptu potřeba jen velmi málo dalšího softwaru.

    Pomocí JavaScriptu můžete vytvořit pole objektů a přiřadit k nim data, například takto:

    příklad

    var zaměstnanci = [
    ("firstName":"Jan", "lastName":"Doe"),
    ("firstName":"Anna", "lastName":"Smith"),
    ("firstName":"Peter","lastName": "Jones")
    ];

    K prvnímu záznamu v poli objektů JavaScript lze přistupovat takto:

    Také to můžete získat takto:

    Údaje lze změnit následovně:

    Dá se to změnit i takto:

    V další kapitole se dozvíte, jak převést text JSON na objekt JavaScript.

    soubory JSON
    • Typ souboru pro soubory JSON „.json“
    • Typ MIME pro text JSON "application/json"