Što je JSON? Bolji format za razmjenu podataka

JavaScript objektna notacija je tekstualni prikaz strukturiranih podataka bez sheme koji se temelji na parovima ključ / vrijednost i poredanim popisima. Iako je JSON izveden iz JavaScript-a, podržan je ili izvorno ili putem knjižnica u većini glavnih programskih jezika. JSON se često, ali ne isključivo, koristi za razmjenu podataka između web klijenata i web poslužitelja. 

Tijekom posljednjih 15 godina JSON je postao sveprisutan na webu. Danas je to odabrani format za gotovo sve javno dostupne web usluge, a često se koristi i za privatne web usluge.

Popularnost JSON-a rezultirala je i izvornom podrškom za JSON u mnogim bazama podataka. Relacijske baze podataka poput PostgreSQL-a i MySQL-a sada se isporučuju s matičnom podrškom za spremanje i ispitivanje JSON podataka. NoSQL baze podataka poput MongoDB i Neo4j također podržavaju JSON, iako MongoDB koristi malo modificiranu, binarnu verziju JSON-a iza kulisa.

U ovom ćemo članku na brzinu pogledati JSON i raspraviti odakle je potekao, njegove prednosti nad XML-om, nedostatke, kada biste ga trebali koristiti i kada biste trebali razmotriti alternative. Ali prvo, zaronimo u glatku sitnicu kako JSON izgleda u praksi.

JSON primjer

Evo primjera podataka kodiranih u JSON:

{

  "FirstName": "Jonathan",

  "LastName": "Freeman",

  “LoginCount”: 4,

  “IsWriter”: istina,

  “WorksWith”: [“Spantree Technology Group”, “”],

  “Kućni ljubimci”: [

    {

      “Name”: “Lilly”,

      “Type”: “rakun”

    }

  ]

}

Gornja struktura jasno definira neke osobine osobe. Sadrži ime i prezime, broj prijava osobe, je li ta osoba pisac, popis tvrtki s kojima osoba surađuje i popis kućnih ljubimaca (u ovom slučaju samo jednog). Struktura poput gornje može se prenijeti s poslužitelja na web preglednik ili mobilnu aplikaciju, koja će zatim izvršiti neku radnju poput prikazivanja podataka ili spremanja za kasniju referencu.

JSON je generički format podataka s minimalnim brojem vrsta vrijednosti: nizovi, brojevi, logičke vrijednosti, popisi, objekti i nula. Iako je notacija podskup JavaScript, ove su vrste zastupljene u svim uobičajenim programskim jezicima, što JSON čini dobrim kandidatom za prijenos podataka kroz jezične praznine.

JSON datoteke

JSON podaci pohranjuju se u datotekama koje završavaju s nastavkom .json. U skladu s JSON-ovim čitljivim etosom, ovo su jednostavno tekstualne datoteke i mogu se lako otvoriti i ispitati. Kao što objašnjava blog SQLizer, ovo je također ključ za širu interoperabilnost JSON-a, jer gotovo svaki jezik kojem možete dati ime može čitati i obrađivati ​​datoteke s običnim tekstom, a lako ih je poslati putem Interneta.

Zašto bih trebao koristiti JSON? 

Da bismo razumjeli korisnost i važnost JSON-a, morat ćemo shvatiti malo o povijesti interaktivnosti na webu. 

Početkom 2000-ih interaktivnost na webu počela se transformirati. U to je vrijeme preglednik služio uglavnom kao nijemi klijent za prikaz informacija, a poslužitelj je radio sve napore na pripremi sadržaja za prikaz. Kad bi korisnik kliknuo na vezu ili gumb u pregledniku, poslužitelj bi se poslao zahtjev, poslužitelj bi pripremio potrebne podatke kao HTML, a preglednik bi HTML prikazao kao novu stranicu. Ovaj je uzorak bio trom i neučinkovit, što je zahtijevalo da preglednik ponovno prikaže sve na stranici, čak i ako se promijenio samo dio stranice.

Budući da su ponovna učitavanja cijelih stranica bila skupa, web programeri su tražili novije tehnologije kako bi poboljšali cjelokupno korisničko iskustvo. U međuvremenu, sposobnost izrade web zahtjeva u pozadini tijekom prikazivanja stranice, koja je nedavno uvedena u Internet Explorer 5, pokazala se održivim pristupom postupnom učitavanju podataka za prikaz. Umjesto ponovnog učitavanja cjelokupnog sadržaja stranice, pritiskom gumba za osvježavanje pokrenut će se web zahtjev koji će se učitati u pozadini. Kada se sadržaj učita, podacima se može manipulirati, spremiti i prikazati na stranici pomoću JavaScript-a, univerzalnog programskog jezika u preglednicima.

ODMOR u odnosu na SOAP: JSON veza

Izvorno su ti podaci preneseni u XML formatu (primjer pogledajte u nastavku) pomoću protokola za razmjenu poruka nazvanog SOAP (Simple Object Access Protocol). Ali XML je bio opširan i teško ga je bilo upravljati u JavaScript-u. JavaScript je već imao objekte koji su način izražavanja podataka unutar jezika, pa je Douglas Crockford uzeo podskup tog izraza kao specifikaciju za novi format razmjene podataka i nazvao ga JSON. JSON je bilo puno lakše za čitanje i preglednike za raščlanjivanje.

Tijekom '00 -ih je druga tehnologija web usluga, nazvana Reprezentativni državni prijenos (REST), počela preuzimati SOAP u svrhu prijenosa podataka. Jedna od velikih prednosti programiranja pomoću REST API-ja je ta što možete koristiti više formata podataka - ne samo XML, već i JSON i HTML. Kako su web programeri preferirali JSON nad XML-om, tako su i oni favorizirali REST nad SOAP-om. Kao što je Kostyantyn Kharchenko rekao na blogu Svitla, "Na mnogo je načina uspjeh REST-a rezultat JSON formata zbog njegove jednostavne upotrebe na raznim platformama."

Danas je JSON de-facto standard za razmjenu podataka između web i mobilnih klijenata i pozadinskih usluga. 

JSON nasuprot XML-u

Kao što je gore spomenuto, glavna alternativa JSON-u je XML. Međutim, XML je sve rjeđi i noviji sustav i lako je shvatiti zašto. Ispod je verzija podataka koje ste vidjeli gore, ovaj put u XML-u:

  Jonathan

  Freeman

  4

  pravi

    Spantree Technology Group

      Lilly

      Rakun

Osim što je detaljniji (u ovom slučaju točno dvostruko opširniji), XML također unosi neke dvosmislenosti prilikom raščlanjivanja u JavaScript strukturu podataka. Pretvaranje XML-a u JavaScript objekt može potrajati od desetaka do stotina redaka koda i u konačnici zahtijeva prilagodbu na temelju određenog objekta koji se raščlanjuje. Pretvaranje JSON-a u JavaScript objekt traje jedan redak koda i ne zahtijeva nikakvo predznanje o predmetu koji se raščlanjuje.

Ograničenja JSON-a

Iako je JSON relativno sažet, fleksibilan format podataka s kojim je lako raditi u mnogim programskim jezicima, postoje neki nedostaci u formatu. Evo pet glavnih ograničenja: 

  1. Nema sheme. S jedne strane, to znači da imate potpunu fleksibilnost u predstavljanju podataka na bilo koji način. S druge strane, to znači da biste slučajno mogli vrlo lako stvoriti deformirane podatke.
  2. Samo jedan broj: IEEE-754 dvostruki precizni format s pomičnom zarezom. To je prilično zalogaj, ali to jednostavno znači da ne možete iskoristiti raznolike i nijansirane vrste brojeva dostupne u mnogim programskim jezicima.
  3. Nema tipa datuma. Ovaj propust znači da programeri moraju pribjeći upotrebi nizovih prikaza datuma, što dovodi do odstupanja u oblikovanju, ili moraju predstavljati datume u obliku milisekundi od epohe (1. siječnja 1970.).
  4. Bez komentara. To onemogućava bilježenje polja u redu, zahtijevajući dodatnu dokumentaciju i povećavajući vjerojatnost nesporazuma.
  5. Govornost. Iako je JSON manje opširan od XML-a, to nije najsažetiji oblik razmjene podataka. Za velike ili posebne namjene usluge, poželite koristiti učinkovitije formate podataka.

Kada trebam koristiti JSON?

Ako pišete softver koji komunicira s preglednikom ili izvornom mobilnom aplikacijom, trebali biste koristiti JSON kao format podataka. Korištenje formata kao što je XML zastarjeli je izbor i crvena zastavica za talent i mobilne telefone koje inače želite privući.

U slučaju komunikacije između poslužitelja, možda bi vam bilo bolje koristiti okvir za serializaciju poput Apache Avro ili Apache Thrift. JSON ovdje nije loš izbor i još uvijek može biti upravo ono što vam treba, ali odgovor nije tako jasan kao za web i mobilnu komunikaciju.

Ako upotrebljavate NoSQL baze podataka, prilično ste zaglavljeni u onome što vam daje baza podataka. U relacijskim bazama podataka koje podržavaju JSON kao vrstu, dobro je pravilo što manje ga koristiti. Relacijske baze podataka prilagođene su strukturiranim podacima koji odgovaraju određenoj shemi. Iako većina sada podržava fleksibilnije podatke u obliku JSON-a, možete očekivati ​​pogodak izvedbe prilikom upita za svojstva unutar tih JSON objekata.

JSON je sveprisutan, de facto format za slanje podataka između web poslužitelja i preglednika te mobilnih aplikacija. Njegov jednostavan dizajn i fleksibilnost olakšavaju čitanje i razumijevanje, a u većini slučajeva i lako upravljanje njima u programskom jeziku po vašem izboru. Nedostatak stroge sheme omogućuje fleksibilnost formata, ali ta fleksibilnost ponekad otežava osiguravanje pravilnog čitanja i pisanja JSON-a.

JSON parser

Dio koda aplikacije koji transformira podatke pohranjene kao JSON u format koji aplikacija može koristiti naziva se parser. JavaScript, kao što biste očekivali, uključuje izvorni parser, metodu JSON.parse ().

Možda ćete morati odraditi malo više posla kako biste surađivali s JSON-om na jako otkucanim jezicima kao što su Scala ili Elm, ali široko prihvaćeno JSON znači da postoje knjižnice i uslužni programi koji će vam pomoći u svim najtežim dijelovima. 

Web mjesto json.org uključuje sveobuhvatan popis knjižnica koda koje možete koristiti za raščlanjivanje, generiranje i manipulaciju JSON-om na jezicima raznolikim poput Pythona, C # i COBOL-a.

JSON komunalne usluge

Ako želite izravno manipulirati ili ispitati podatke kodirane JSON-om, a da sami ne pišete kôd, postoji niz mrežnih programa koji vam mogu pomoći. Svi programski ekvivalenti u bibliotekama koda povezani su s gore navedenim, ali JSON kôd možete izrezati i zalijepiti u ove alate temeljene na pregledniku kako biste lakše razumjeli JSON ili izvršili brzu i prljavu analizu:

  • JSON Formatter: JSONLint će formatirati i potvrditi proizvoljni JSON kôd.
  • JSON Viewer: Stack.hu ima web mjesto koje će stvoriti interaktivno stablo koje će vam pomoći da razumijete strukturu vašeg JSON koda. 
  • JSON uljepšavač: Ako želite "lijepo isprintati" svoj JSON kod, s bojanjem sintakse i slično, Prettydiff vam može pomoći. 
  • JSON Converter: Trebate brzo premjestiti podatke iz JSON formata u nešto drugo? Convertcsv.com ima alate koji mogu pretvoriti JSON u CSV (koji se zatim može otvoriti u Excelu) ili XML.

Vodič za JSON

Jeste li spremni zaroniti i saznati više o tome kako se radi s JSON-om u vašim interaktivnim aplikacijama? Mozilla Developer Network ima sjajnu lekciju koja će vam pomoći da započnete s JSON-om i JavaScriptom. Ako ste spremni prijeći na druge jezike, pogledajte tutorial o korištenju JSON-a s Javom (iz Baeldunga), s Pythonom (iz DataCampa) ili sa C # (iz pomoći za testiranje softvera). Sretno!

Josh Fruhlinger pridonio je ovom članku.