Naznačavanje objekata kroz JavaScript

Neke stvari je doista teško prevoditi, pa ih stoga treba sačuvati u izvornom obliku, ali im dati neki miris, duh lokalizma, pa tako umjesto JSON – JavaScript Object Notation, možda bi trebalo pisati Džejson – Javaskript objekt notacije. Dobro, dobro, izaći ću sam.

Kako god, JSON je nešto što se koristi danas svuda, a vjerovatno će se koristiti i u budućnosti još mnogo više, zbog toga jedan kratki članak o JSON-u, prije nego pređemo na “ozbiljnije” stvari.

Šta je JSON?

JSON je prije svega alternativa XML-u. Oni malo stariji programeri sjetiće se koliko je bila ogromna i nezgrapana svaka XML konfiguraciona datoteka. Nažalost, XML format za konfiguracije, kao i protokole (razmjenu podataka između dva servisa) itekako se koristi i danas. Posebno to znaju Java programeri, kojima se možda od pomisli da pređu na JSON diže kosa na glavi. JSON je najobičniji tekst, odnosno tekstualna forma, baš poput bilo kog kôda programskog ili skriptnog jezika, ali poštuje sintaksu JavaScript-a, tačnije zasnovana je na sintaksi JavaScript. Nije Java, nego JavaScript! Iako koristi JavaScript sintaksu, JSON je jezički nezavisan, ili što bi danas popularno kazali jezički agnostik. To znači da se JSON može koristiti (o itekako se koristi) u bilo kom programskom jeziku.

JSON sintaksa*

Već smo prije kazali da je sintaksa JSON-a bazirana na JavaScripti. U osnovi se sastoji od dva tipa: Objekata i Nizova (Objects i Array).

Objekti su skup ime-vrijednost parova, dok su nizovi lista vrijednosti (bez imena, odnosno ključa kako se to nekada naziva).

Objektna deklaracija**

{
      "id": 4911,
      "firstName":"Enver",
      "lastName":"Dinar",
      "isStudent": true
}

Za one koji dolaze is svijeta XML-a, gornji objekat bi imao izgled nalik:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <firstName>Enver</firstName>
  <id>4911</id>
  <isStudent>true</isStudent>
  <lastName>Dinar</lastName>
</root>

Nije teško zaključiti koliko je XML format složeniji ima potpuno nepotrebno višak karaktera. U ovom slučaju, XML ih ima čak 157, dok JSON svega 98 ili skoro 40% manje! 

Par napomena o gornjem, JSON objektu:

  • JSON je napisan u objekt tipu (A ne u niz tipu, o čemu će biti govora kasnije). Tj. postoje parovi ime/vrijednost, odnosno ključ/vrijednost. Parovi se uparuju samo i jedino s “:” (dvotačkom), a nije ih moguće u pariti s npr. “=” (znakom jednakosti).
  • Svaki JSON objekat mora počinjati i završavati vitičastim zagradama. Za validaciju JSON-a koji se piše ručno postoji mnogo alata, čak i online. Dovoljno je kopirati JSON objekat, a zatim ga spustiti u polje za unos na nekoj stranici i kliknuti na dugme za validaciju.
  • JSON string vrijednosti mogu biti ograničene samo i jedino dvostrukim navodnicima – “, a nikako jednostrukim – ‘ ili tzv. greiv akcenatom (Grave Accent) – `.

Deklaracija niza (array)

...
[
    "Belgium", "Brazil", "Cameroon", "Canada", "Chile", "Denmark"
]
...

Isječak JSON objekta iznad prikazuje kako se oblikuje niz. Ovaj niz, ustvari, predstavlja listu string vrijednosti.

Par napomena o nizovima u JSON objektu:

  • Nizovi su lista vrijednosti čiji je skriveni ključ ili index 0 (da, mi programeri uvijek brojimo od nule).
  • Nizovi su omeđeni uglatim zagradama.
  • Vrijednosti su razdvojene samo i jedino zarezom, a nikako dvotačkom (:) ili tačkom-zarezom (;).
  • Vrijednosti mogu biti bilo koji podržani tipovi, pa čak i objekti (pod-objekti) ili nizovi.

JSON vrijednosti

Nakon dva mala, ali značajna primjera da se zaključiti da JSON ima svoja pravila kod dodjele vrijednosti, kao uostalom i sve vezano za programske i skriptne jezike i šeme. U nastavku je lista podržanih tipova vrijednosti:

  • string – grupa slova i brojeva (omeđena dvostrukim navodnicima)
  • integer – cjeloviti broj
  • number – decimalni (i cjeloviti) broj
  • boolean – dvoznačni tip (true, false)
  • null – za oznaku ničega (nije, prazno, ili nula, nego ništa)
  • object – kao naslijeđeni objekti, tj. objekat može sadržavati drugi objekat
  • array – nizovi, koji mogu sadržavati svaki od navedenih tipova, uključujući i sam niz (naslijeđeni niz)

JSON vrijednosti ne mogu biti funkcije, datum (i vrijeme u bilo kom obliku, izuzev kao broj, npr broj sekundi, broj minuta, broj dana, …), te nedefinisano – undefined.

Tipovi datoteka

Zbog masovne i veoma široko rasprostranjene upotrebe JSON objekata, mnogi softveri prepoznaju nastavak na imenu datoteke – .json, posebno ako se radi s nekim od alata za programiranje – IDE (Integrated development environment).

Već prije smo naveli da se JSON koristi kako za konfiguracije (kao konfiguraciona datoteka) ili pak za razmjenu podataka između servisa (kako kod primanja odgovora – što je mnogo češće, tako i kod slanja zahtjeva ka serveru).

Primjer

Primjera je naravno mnoštvo svuda u svijetu programiranja. Danas je skoro pa nemoguće zamisliti da neko ko se bavi programiranjem, a da ne zna šta je JSON. No, ovaj članak pišemo iz dva razloga. Jedan je za one koji iako ga koriste, možda ne razumiju u potpunosti šta je, i drugi za one koji se još ipak nisu sreli s JSON-om.

Kako god, ponavljamo, JSON nije nikakav bauk i samo je i jedino “najobičniji” tekst formatiran u skladu s JavaScript sintaksom.

Primjer rezultata na upit prema Facebook API serveru:

{
  "data": [
      {
        "id": "X999_Y999",
        "from": {
            "name": "Tom Brady", "id": "X12"
        },
        "message": "Looking forward to 2010!",
        "actions": [
            {
              "name": "Comment",
              "link": "http://www.facebook.com/X999/posts/Y999"
            },
            {
              "name": "Like",
              "link": "http://www.facebook.com/X999/posts/Y999"
            }
        ],
        "type": "status",
        "created_time": "2010-08-02T21:27:44+0000",
        "updated_time": "2010-08-02T21:27:44+0000"
      },
      {
        "id": "X998_Y998",
        "from": {
            "name": "Peyton Manning", "id": "X18"
        },
        "message": "Where's my contract?",
        "actions": [
            {
              "name": "Comment",
              "link": "http://www.facebook.com/X998/posts/Y998"
            },
            {
              "name": "Like",
              "link": "http://www.facebook.com/X998/posts/Y998"
            }
        ],
        "type": "status",
        "created_time": "2010-08-02T21:27:44+0000",
        "updated_time": "2010-08-02T21:27:44+0000"
      }
  ]
}

* sintaksa – Skup pravila koja određuju način na koji se sklapaju rečenice jezika.

** deklaracija – Objava, izjava, izjašnjenje, izlaganje, objavljivanje.

1

Hits: 75