JSON – multiplatformní zápis dat

JSONBěhem prozkoumávání funkcí API od SEOmoz jsem se seznámil s výborným způsobem přenosu informací mezi dvěma subjekty. V mém případě šlo o skript schopný zpracovat výsledky na základě odpovědi, kterou získal od serveru. Řešení se označuje jako JSON, což znamená JavaScript Object Notation. Neznamená to však, že by údaje bylo možno zpracovat pouze s pomocí JavaScriptu, spíše je tomu naopak. Já jsem využil PHP, JSON však podporují i jiné jazyky. A čím vlastně popisovaný formát uchování dat vyniká? Jde o schopnost přenášet nejen řetězce, ale rovnou celé objekty či pole. Populární CSV se dle mého názoru na tento úkol příliš nehodí, jeho doménu symbolizují spíše údaje z databáze či tabulky. Výsledek po konverzi přitom získá formu běžného řetězce. Vypadat může například takto:

{"fmrp":3.31508823980473,"fmrr":8.71399339003802e-10,"pda":29.96283221096798,"ueid":42,"ufq":"szj.cz/","uid":120,"umrp":3.851694829321838,"umrr":3.447144837370461e-11,"upa":37.82389310886856,"upl":"szj.cz/","us":200,"ut":"szj.cz | internet, novinky, linux, programování","uu":"szj.cz/"}

Obrovskou výhodu přitom představuje možnost přečíst jednotlivé složky bez nutnosti jakékoliv předchozí programové úpravy. Stačí proto jediný pohled a ihned získáte ponětí o tom, s jakými informace máte tu čest.

Další JSON vlastnosti

Začal jsem se o celou problematiku blíže zajímat a záhy jsem zjistil, že při používání JSON se musí dbát pouze na jedinou věc. V samotném zápisu nenaleznete údaj nesoucí použité kódování. To znamená, že jej programátor musí jasně specifikovat. Pakliže tak učiněno není, s největší pravděpodobností půjde o UTF-8. Toto kódování se totiž považuje za výchozí.

Zpracování v PHP

Když jsem již otázku převodu dat zpět do použitelné podoby musel vyřešit, určitě nezaškodí, když předvedu mnou aplikovaný postup v případě PHP. Nejde přitom o nic složitého, stačí použít vhodnou funkci. Ta se jmenuje json_decode a jako první parametr očekává vstupní data. Ovlivnit rovněž lze, zda jako výstup dostaneme objekt nebo asociativní pole. Rozhodl jsem se pro druhou variantu, a proto na místě druhého parametru vidíte true.

echo var_dump(json_decode($json, true));
array(13) {
  ["fmrp"]=>
  float(3.3150882398047)
  ["fmrr"]=>
  float(8.713993390038E-10)
  ["pda"]=>
  float(29.962832210968)
  ["ueid"]=>
  int(42)
  ["ufq"]=>
  string(7) "szj.cz/"
  ["uid"]=>
  int(120)
  ["umrp"]=>
  float(3.8516948293218)
  ["umrr"]=>
  float(3.4471448373705E-11)
  ["upa"]=>
  float(37.823893108869)
  ["upl"]=>
  string(7) "szj.cz/"
  ["us"]=>
  int(200)
  ["ut"]=>
  string(49) "szj.cz | internet, novinky, linux, programování"
  ["uu"]=>
  string(7) "szj.cz/"
}

K samotným údajům se poté pohodlně dostaneme přes patřičný index.

$pole = json_decode($json, true);
echo $pole["fmrp"];
//Výpis
3.31508823980473

1 komentář u „JSON – multiplatformní zápis dat

  1. lucas03

    Pekne, json som si aj ja vsimal na roznych api serveroch. Presne toto budem potorebovat na blekko, mozno archive.org a asi do buducnosti x dalsich :) Dik

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>