Natrag na blog

Pregled JSON formata za razmjenu podataka

Pregled JSON formata za razmjenu podataka

JavaScript Object Notation (JSON skraćeno i izgovara se slično kao ime ‘Jason’), vrsta je formata za razmjenu podataka. Kao što i samo ime govori, JSON potječe iz JavaScript, ali on nije jedini vlasnik koda koji dopušta njegovo korištenje. Zapravo, mnogi drugi programski jezici imaju ga na raspolaganju za upotrebu, uključujući Ruby, PHP, Python, i Java.

Kada postoji samostalno, JSON datoteka koristi .json ekstenziju, ali budući da je to format koji se lako prenosi između web poslužitelja i klijenta (ili preglednika), može se definirati i kao .html format. U tom slučaju, to može biti objekt dodijeljen varijabli ili se pojaviti kao JSON niz unutar navodnika.

JSON je dobra alternativa XML-u jer je čitljiviji i zahtijeva minimalno oblikovanje. Ovaj vodič će vas naučiti o podacima koji se mogu pohraniti u JSON datoteke, kao i o općoj sintaksi i strukturi tog formata.

Struktura & sintaksa

JSON objekt je format podataka koji koristi vitičaste zagrade za prikaz parova ključ-vrijednost. Kada radite s JSON-om, najčešće ćete ga vidjeti prikazanog u .json datotekama, ali u kontekstu programa može postojati i kao string ili JSON objekt.

Evo primjera kako izgleda JSON objekt:

json object

Iako je ovo prilično kratak primjer, a JSON objekti mogu biti puno duži, on točno pokazuje kako se ovaj format obično postavlja s dvije vitičaste zagrade na svakom kraju, s parovima ključ-vrijednost koji ispunjavaju prostor između njih. Većina podataka u JSON-u enkapsulirana je u JSON stavku.

Postoji dvotočka koja razdvaja parove ključ-vrijednost (“ključ” : “vrijednost”). Svaki od tih parova odvojen je zarezom kao različiti članovi popisa. To rezultira središnjim dijelom JSON oblikovanja na sljedeći način: “ključ” : “vrijednost”, “ključ” : “vrijednost”, “ključ” : “vrijednost”. U gornjem primjeru, "name" : "Akshay" je, na primjer, prvi par ključ-vrijednost.

Ključevi u svakom objektu moraju biti jedinstveni, mogu se prikazati kao bilo koji valjani string, obavijeni dvostrukim navodnicima (“ključ”), i uvijek se nalaze s lijeve strane dvotočke. Iako su razmaci u ključnim stringovima dopušteni (kao što je u “prvo ime”), to predstavlja izazovniji pristup s programerske strane u smislu pristupa. Iz tog razloga, uobičajena programerska praksa je zamijeniti razmake u ključevima podvlakama (“prvo_ime”).

Vrijednosti u JSON-u nalaze se desno od dvotočke. Na svojoj najosnovnijoj razini, one moraju biti jedan od 6 specifičnih tipova podataka:

  • Brojevi
  • Objekti
  • Nizovi
  • Stringovi
  • Točno ili netočno (Boolean)
  • Null

Sljedeći odjeljak pokrit će složenije tipove podataka niza JSON objekata, pri čemu svaka vrijednost proslijeđena u JSON zadržava svoju sintaksu. Drugim riječima, stringovi će se i dalje pojavljivati u navodnicima, dok numeričke vrijednosti neće.

JSON format se prema konvenciji obično ispisuje u više redaka. Međutim, može se oblikovati i u jednom retku:

single line json

Ova vrsta oblikovanja češća je kada se naiđe na JSON string ili unutar druge vrste datoteke. Kada radite s velikim skupovima podataka, pisanje dvotočaka i parova ključ-vrijednost u zasebnim redcima čini popis čitljivijim za ljudsko oko jer JSON-u nedostaje pomoć razmaka za razdvajanje:

json object

Iako JSON objekt nalikuje na JavaScript, važno je imati na umu da su to različiti formati. Dok JavaScript dopušta korištenje funkcija, JSON to ne dopušta. Ono što JSON čini tako vrijednim jest njegova kompatibilnost između različitih jezika, što omogućuje svim programskim platformama da ga interpretiraju.

Do sada smo JSON format promatrali samo u njegovom najjednostavnijem obliku, ali on se može razvijati hijerarhijski i na složeniji način kada uključuje ugniježđene objekte i nizove. U sljedećem odjeljku pogledat ćemo napredniji JSON.

Korištenje složenih JSON tipova

Osim ugniježđenih nizova, JSON može pohraniti i ugniježđene objekte. Ti će se objekti i nizovi prenositi kao vrijednosti za ključeve te će se povezati s ključevima kako bi tvorili parove ključ-vrijednost.

  • Stvaranje ugniježđenih objekata

U sljedećoj users.json slikovne datoteke, postoji ugniježđeni JSON objekt prenesen za svakog od četiri korisnika (“akshay”, “sam”, “Andrew”, “James”). Svaki korisnik posjeduje vlastite ugniježđene ključeve (“location” i “username”):

nested

Istaknuti dio predstavlja primjer prvog ugniježđenog objekta. Vitačaste zagrade koriste se u gornjem primjeru za stvaranje ugniježđenog JSON objekta s odgovarajućim korisničkim imenom i detaljima o poziciji za svakog od četiri korisnika. Kada se koriste objekti, zarezi se koriste za razlikovanje stavki na temelju određenog atributa korisnika.

  • Formiranje ugniježđenih nizova

Javascript nizovi proslijeđeni kao vrijednost također se mogu iskoristiti za ugniježđivanje podataka unutar JSON formata. To se postiže korištenjem [ ] (uglatih zagrada) na kraju vrsta niza, pri čemu su nizovi strukturirani popisi s uključenim jedinstvenim tipovima podataka:

array

U istaknutom dijelu gornjih primjera, Akshay’eva 2 profila na društvenim mrežama i 2 poveznice na web stranice koriste se unutar niza ugniježđenih informacija, zbog prisutnosti uglatih zagrada. Uključivanjem ugniježđivanja na ovaj način u JSON-u, možemo postići veću svestranost u radu s hijerarhijskim i složenim podatkovnim sadržajem.

  • Usporedba s XML-om

Extensible Markup Language (XML) pruža metodu za pohranu podataka kojima mogu pristupiti i strojevi i ljudi. Poput JSON-a, XML mogu koristiti mnogi programski jezici. Za razliku od JSON-a, XML uključuje znatno više teksta i stoga je složeniji i zahtijeva više vremena za sastavljanje. Dok standardna funkcija može analizirati JSON, XML zahtijeva parser specifičan za XML. Povrh toga, XML ne može koristiti nizove. Usporedimo iste podatke formatirane u XML-u u odnosu na JSON:

xml vs json

XML zahtijeva znatno više teksta i zauzima više prostora. Također zahtijeva završne oznake, dok je JSON daleko kompaktniji i jednostavnije posložen. Oni koji su upoznati s HTML-om vjerojatno mogu uočiti sličnost u korištenju oznaka u XML-u.

Prije donošenja odluke o tome koji format koristiti, uvijek pomaže procijeniti opseg i potrebe projekta. JSON je manje opširan, jednostavniji i brz za korištenje u AJAX aplikacijama i drugim situacijama. Vrsta projekta pomoći će u rasvjetljavanju najprikladnijih podatkovnih struktura za korištenje.

Saznajte više o JSON-u

JSON je svestran i prirodan format koji se može implementirati u više programskih jezika. Cijeli popis podržanih jezika moći ćete pronaći na stranici “Introducing JSON” . Osim toga, informacije o parsiranju i kompatibilnosti mogu se pronaći u “iQuery knjižnici.”

Na kraju, najvjerojatnije nećete prečesto pisati čisti JSON. Umjesto toga, povlačit ćete ga iz izvora podataka ili prevoditi druge podatkovne datoteke u JSON. Koristeći alat otvorenog koda Mr. Data Converter, možete prevesti CSV podatke ili podatke razdvojene tabulatorima pronađene u tabličnim programima u JSON. S Creative Commons licenciranom utilities-online.info platformom, možete prevesti XML u JSON i obrnuto. Kada koristite automatizirani softver, dvaput provjerite izvješća kako biste uklonili suvišnost.

Također možete koristiti JSONLint za provjeru vašeg JSON-a i JFiddle za njegovu procjenu u kontekstu web razvoja prilikom pretvaranja drugih vrsta u JSON format.

Zaključak

Uz sve veću API podršku (uključujući Twitter API), JSON je lagani format podataka koji promiče jednostavnost u uređivanju, pohranjivanju i dijeljenju podataka. Budući da nećete sami generirati svoje .json datoteke, već ćete ih primati iz drugih izvora, važnije je razmišljati o tome kako koristiti JSON u svojim programima nego o njegovoj strukturi.

Evo dodatnih resursa s našeg bloga koji će vam pomoći u programiranju s JavaScriptom:

Sretno programiranje!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.