Primjer JSON Stringify - Kako raščlaniti JSON objekt s JS-om

Postoji toliko mnogo programskih jezika, a svaki jezik ima svoje osobine. Ali svima im je zajedničko jedno: obrađuju podatke. Od jednostavnog kalkulatora do superračunala, svi oni rade na podacima.

Isto je s ljudima: toliko je zemalja, toliko je kultura i toliko je znanja unutar svake zajednice.

Ali za komunikaciju s drugim zajednicama ljudima je potreban zajednički medij. Ljudima je jezik ono što je JSON programiranju, uobičajenom mediju prijenosa podataka.

Što je JSON?

JSON označuje J Ava S cript O bject N otation. Dakle, prije razumijevanja JSON-a, shvatimo objekte u JavaScript-u.

Svaki programski jezik ima neku metodu za pohranu sličnih podataka zajedno. U C, na primjer, nazivaju se strukturama.

U JavaScript-u objekti su zbirka parova ključ / vrijednost, gdje vrijednosti mogu biti bilo koja varijabla (broj, niz, logička vrijednost), drugi objekt ili čak funkcija. Objekti su vrlo korisni u objektno orijentiranom programiranju.

Objektno orijentirano programiranje je programska paradigma koja se temelji na konceptu "objekata", a koja može sadržavati podatke u obliku polja i kôd u obliku postupaka.

Pogledajmo primjer.

U JavaScriptu se objekti definiraju pomoću kovrčavih zagrada, na primjer:

var obj = {};

Evo objpraznog predmeta. Objekte također možete stvoriti pomoću konstruktora, na primjer:

function Student(name, roll_number, age) { this.name = name; this.roll_number = roll_number; this.age = age; } var student1 = new Student("Abhishek", "123", 18); console.log(student1.name, student1.roll_number, student1.age);

To bi dalo izlaz Abhishek 123 18.

Tako stvarate objekte u JavaScript-u. Ali ti su objekti i dalje varijable koje su specifične samo za JavaScript.

Ako želite izvesti te objekte i, na primjer, poslati ih poslužitelju, potrebna vam je metoda za njihovo kodiranje. Da vidimo kako se to radi.

JSON Stringify

Da bismo mogli prenositi podatke s jednog uređaja na drugi i s jednog jezika na drugi, potrebna nam je strukturirana, ujednačena i dobro definirana konvencija.

Iako se JSON temelji na JS objektima, određeni uvjeti moraju biti valjani. Srećom, ne morate se brinuti zbog tih uvjeta - jer u JavaScript-u imamo metodu koja se zove JSON.stringify().

Ova se metoda koristi za pretvaranje JS objekta u kodirani niz koji se može prenijeti bilo gdje bez gubitka podataka.

Moglo bi izgledati čarobno da se bilo koji objekt može kodirati u niz i poslati bilo gdje. Razumijemo ga dublje kroz neke primjere.

Ovo je prototip metode stringify:

JSON.stringify(value[, replacer[, space]])

Prvi je parametar valuekoji je objekt koji želite stringificirati. Drugi i treći parametar nisu obavezni i mogu se koristiti ako želite prilagoditi kako će se kodirati (na primjer, separator i uvlaka).

Pokušajmo strogo označiti naš gornji primjer.

function Student(name, roll_number, age) { this.name = name; this.roll_number = roll_number; this.age = age; } var student1 = new Student("Abhishek", "123", 18); var str = JSON.stringify(student1); console.log(str);

To će dati izlaz {"name":"Abhishek","roll_number":"123","age":18}.

Ako koristite medij parametre, odnosno zamijenit ćemo JSON.stringify(student1)s JSON.stringify(student1, null, 2), mi ćemo dobiti nešto ovako:

{ "name": "Abhishek", "roll_number": "123", "age": 18 }

Pomoću njih možete ispisati JSON u čitljivom formatu. Pokušajmo sada još jedan primjer.

Ovdje ćemo koristiti objektne metode. Objektne metode su funkcije unutar objekta koje se mogu pozvati s tim objektom, koristeći metode iz našeg gornjeg primjera:

function Student(name, roll_number, age) { this.name = name; this.roll_number = roll_number; this.age = age; this.print = function() { console.log(this.name, this.roll_number, this.age); } } var student1 = new Student("Abhishek", "123", 18); student1.print();

To će dati isti izlaz kao i prvi primjer, tj Abhishek 123 18.

Objektne metode mogu se koristiti za izvršavanje funkcija povezanih s objektom i korištenje svojstava objekta. Pokušajmo strijefificirati ovaj objekt.

function Student(name, roll_number, age) { this.name = name; this.roll_number = roll_number; this.age = age; this.print = function() { console.log(this.name, this.roll_number, this.age); } } var student1 = new Student("Abhishek", "123", 18); var str = JSON.stringify(student1); console.log(str);

To još uvijek će vam dati isti rezultat, {"name":"Abhishek","roll_number":"123","age":18}.

Dakle, objektne metode ignoriraju se funkcijom stringify. Ako želite da se i oni prenesu, prvo ih morate pretvoriti u niz.

Na primjer, možete nazvati, student1.print = student1.print.toString()a zatim stringify. Tada biste dobili nešto poput ovoga:

{"name":"Abhishek","roll_number":"123","age":18,"print":"function() {\n    console.log(this.name, this.roll_number, this.age);\n  }"}

Razmotrimo još jedan objekt:

var obj = {}; obj.key1 = "value1"; obj.key2 = obj; var str = JSON.stringify(obj); console.log(obj);

Ovo će dovesti do pogreške u izreci Uncaught TypeError: Converting circular structure to JSON.

To se događa jer se key2 vraća natrag na obj. Takvi su objekti poznati kao kružni objekti i ne mogu se pretvoriti u JSON niz.

Tu dobro dolazi drugi parametar. Iako ovdje neću pokazati kako to funkcionira, rješenje možete pronaći na ovoj MDN stranici.

Na ovaj način kodirate JSON. Sada ćemo vidjeti kako raščlaniti JSON niz.

JSON raščlamba

Baš kako JavaScript ima funkciju za stringifikaciju JSON-a, imamo i funkciju za raščlanjivanje tog stringificiranog JSON-a. Ovo je prototip funkcije:

JSON.parse(text[, reviver])

Ovdje je prvi parametar JSON niz koji treba raščlaniti. Drugi parametar nije obavezan i može biti funkcija za izmjenu raščlanjenog JSON-a prije povratka. Pokažimo ovu metodu na primjeru.

function Student(name, roll_number, age) { this.name = name; this.roll_number = roll_number; this.age = age; } var student1 = new Student("Abhishek", "123", 18); var str = JSON.stringify(student1); var parsedJSON = JSON.parse(str); console.log(parsedJSON,name. parsedJSON.roll_number, parsedJSON.age);

A izlaz će biti Abhishek 123 18, pa je JSON niz uspješno raščlanjen.

You could use this to send data from client to server. The data to be sent can be JSON encoded at the client and the stringified JSON will be parsed at the server and processed. This makes it really easy.

JSON can also be used to transmit data across different programs written in different languages. All languages have libraries to stringify and parse JSON.

JSON vs. XML

XML or eXtensible Markup Language is a very popular way of storing and transmitting data, similar to JSON. It existed before JSON and is still widely used today.

For example, it's used in RSS feeds, which are still the most popular way of subscribing to some publication or author. There are also XML sitemaps which are a list of all pages on a website. And search engines use them to see if there are any new pages to be crawled.

XML uses markup format – similar to HTML but much stricter.

JSON and XML have various similarities and differences, as explained in the following points:

  • Both are human-readable
  • Both have a hierarchial structure
  • Both are widely supported across various programming languages
  • Both can be fetched from the server using HTTP requests
  • JSON is shorter than XML
  • JSON can use arrays
  • JSON can be parsed using standard JavaScript functions, whereas XML needs to be parsed using the XML DOM (which is slower)

The same data can be expressed in JSON and XML as follows:

JSON:

{"employees":[ { "firstName":"Quincy", "lastName":"Larson" }, { "firstName":"Abigail", "lastName":"Rennemeyer" }, { "firstName":"Abhishek", "lastName":"Chaudhary" } ]}

XML:

  Quincy Larson   Abigail Rennemeyer   Abhishek Chaudhary  

JSON je iz mnogih razloga bolji od XML-a, ali to ne znači da bismo trebali napustiti XML. Ipak, JSON će u budućnosti postati preferirani oblik prijenosa podataka.

JWT - Budućnost JSON-a

JSON web žeton (JWT) otvoreni je standard koji definira kompaktan i samostalan način za siguran prijenos podataka između strana kao JSON objekt.

Te se podatke može provjeriti i vjerovati im je jer su digitalno potpisane. JWT se mogu potpisati tajnom (s algoritmom HMAC) ili parom javnih / privatnih ključeva pomoću RSA ili ECDSA.

Ovi se tokeni mogu koristiti za potpisivanje JSON podataka i provjeru identiteta pošiljatelja. Budući da su podaci potpisani, ako su neki podaci neovlašteni, odmah ćete to znati.

Though we won't discuss the implementation in full here, we can understand how it works. A JSON Web Token consists of three parts, the header, the payload and the signature.

The header consists of the type of token and algorithm used, the payload consists of the data, and the signature is the value you get when you sign the header and payload together.

The final token is in the form of ...

These tokens are currently used in authorization and are faster and more compact than other authorization methods. These may be very useful in the future and their potential is very high.

Conclusion

In this article, we've seen the importance of JSON as a medium of data transfer between completely different systems, and why is it so convenient.

JSON is a universal medium and is not just specific to JavaScript. JSON is already used in NoSQL databases to store data in JSON format.

We also compared JSON and XML and saw why JSON is more efficient and faster than XML. In the future, we may develop even better ways of transmitting data.

The rate at which the internet is growing, efficient data transfer will be the highest priority. And JSON serves that function really well for now.

You can try new things with JSON and implement different data structures – it's open to innovation, and we should never stop experimenting.

Hope you liked my article. I have learned a lot by writing it, and your appreciation motivates me everyday, Do visit my internet home theabbie.github.io.