JSON karakterlánc-példa - JSON-objektum elemzése JS-sel

Nagyon sok programozási nyelv létezik, és minden nyelvnek megvannak a maga sajátosságai. De mindegyikben van egy közös vonás: adatokat dolgoznak fel. Az egyszerű számológéptől a szuperszámítógépekig mind dolgoznak az adatokon.

Ugyanez van az emberekkel is: annyi ország, ennyi kultúra és annyi ismeret van minden közösségen belül.

De más közösségekkel való kommunikációhoz az embereknek közös közegre van szükségük. A nyelv az emberek számára az, amit a JSON a programozásnak, az adatátvitel közös közegének.

Mi a JSON?

JSON jelentése J Ava S cript O bject N otation. Tehát a JSON megértése előtt értsük meg a JavaScript objektumait.

Minden programozási nyelv rendelkezik valamilyen módszerrel a hasonló adatok együttes tárolására. A C-ben például struktúráknak nevezik őket.

A JavaScript-ben az objektumok kulcs-érték párok gyűjteménye, ahol az értékek bármely változó (szám, karakterlánc, logikai érték), másik objektum vagy akár függvény lehetnek. Az objektumok nagyon hasznosak az objektum-orientált programozásban.

Az objektum-orientált programozás az "objektumok" fogalmán alapuló programozási paradigma, amely adatokat tartalmazhat mezők formájában, és kódot, eljárások formájában.

Nézzünk meg egy példát.

A JavaScriptben az objektumokat göndör zárójelek segítségével definiálják, például:

var obj = {};

Itt objvan egy üres tárgy. Létrehozhat objektumokat konstruktorok segítségével is, például:

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);

Ez adná a kimenetet Abhishek 123 18.

Így hozhat létre objektumokat a JavaScript-ben. De ezek az objektumok továbbra is csak a JavaScript-re jellemző változók.

Ha ezeket az objektumokat exportálni kívánja, és például el akarja küldeni egy szerverre, akkor metódusra van szüksége a kódoláshoz. Nézzük meg, hogy van ez.

JSON Stringify

Ahhoz, hogy adatokat továbbítsunk egyik eszközről a másikra, és egyik nyelvről a másikra, szükségünk van egy strukturált, egységes és jól körülírt konvencióra.

Noha a JSON JS objektumokon alapul, bizonyos feltételeknek érvényesnek kell lenniük. Szerencsére nem kell aggódnia ezekért a feltételektől - mert a JavaScript-ben van egy úgynevezett módszerünk JSON.stringify().

Ezt a módszert használják arra, hogy a JS objektumokat kódolt karakterláncokká alakítsák át, amelyeket bárhol továbbíthatnak adatok elveszítése nélkül.

Varázslatosnak tűnhet, hogy bármely objektum karakterláncba kódolható és bárhová elküldhető. Néhány példán keresztül értsük meg mélyebben.

Ez a stringify módszer prototípusa:

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

Az első paraméter az, hogy valuemelyik objektumot kívánja szigorítani. A második és a harmadik paraméter opcionális, és akkor használható, ha testre szeretné szabni a kódolás módját (például az elválasztó és a behúzás).

Próbáljuk meg szigorítani a fenti példánkat.

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);

Ez adja meg a kimenetet {"name":"Abhishek","roll_number":"123","age":18}.

Ha az opcionális paramétereket használjuk, vagyis kicseréljük JSON.stringify(student1)őket JSON.stringify(student1, null, 2), akkor valami ilyesmit kapunk:

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

Ezekkel felhasználhatja a JSON olvasható formátumban történő kinyomtatását. Most próbálkozzunk még egy példával.

Itt objektum módszereket fogunk használni. Az objektum metódusok egy objektumon belüli olyan függvények, amelyek az adott objektummal meghívhatók a fenti példánkban szereplő módszerek segítségével:

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();

Ez ugyanazt a kimenetet adja, mint az első példa, vagyis Abhishek 123 18.

Az objektum metódusok felhasználhatók egy objektumhoz társított funkciók végrehajtására és az objektum tulajdonságainak felhasználására. Próbáljuk meg szigorítani ezt az objektumot.

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);

Ez továbbra is megadja ugyanazt a kimenetet, {"name":"Abhishek","roll_number":"123","age":18}.

Így az objektum metódusokat a stringify függvény figyelmen kívül hagyja. Ha azt szeretné, hogy továbbítsák őket, először konvertálnia kell őket karakterláncokká.

Például hívhat student1.print = student1.print.toString(), majd szigoríthat. Akkor valami ilyesmit kapna:

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

Vegyünk egy másik tárgyat:

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

Ez hibát fog mondani Uncaught TypeError: Converting circular structure to JSON.

Ez azért történik, mert a key2 az objektre hivatkozik. Az ilyen objektumokat kör alakú objektumoknak nevezik, és nem alakíthatók át JSON karakterláncokká.

Itt jön jól a második paraméter. Bár itt nem fogom bemutatni a működését, a megoldást ezen az MDN oldalon találja meg.

Így kódolja a JSON-t. Most nézzük meg, hogyan kell elemezni a JSON karakterláncot.

JSON elemzése

Hogy a JavaScriptnek milyen funkciója van a JSON sztringelésére, van egy funkciónk a sztringelt JSON elemzésére is. Ez a függvény prototípusa:

JSON.parse(text[, reviver])

Itt az első paraméter a JSON karakterlánc, amelyet elemezni kell. A második paraméter opcionális, és funkció lehet az elemzett JSON módosításához a visszatérés előtt. Bemutassuk ezt a módszert egy példával.

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);

És a kimenet az lesz Abhishek 123 18, így a JSON karakterláncot sikeresen elemezték.

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  

A JSON sok okból jobb, mint az XML, de ez nem azt jelenti, hogy el kellene hagynunk az XML-t. Ennek ellenére a JSON lesz a jövőben az adatátvitel előnyben részesített formája.

JWT - A JSON jövője

A JSON Web Token (JWT) egy nyílt szabvány, amely kompakt és önálló módszert határoz meg az információk biztonságos továbbításához a felek között JSON objektumként.

Ez az információ ellenőrizhető és megbízható, mert digitálisan aláírt. A JWT-ket alá lehet írni egy titkos (HMAC algoritmussal) vagy egy nyilvános / privát kulcspár segítségével RSA vagy ECDSA segítségével.

Ezek a tokenek felhasználhatók a JSON-adatok aláírására és a feladó személyazonosságának ellenőrzésére. Mivel az adatok alá vannak írva, ha bármilyen adatot megváltoztattak, azonnal megtudhatja.

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.