JSON-i stringifitseerimise näide - kuidas sõeluda JSON-i objekti JS-iga

Programmeerimiskeeli on nii palju ja igal keelel on oma omadused. Kuid neil kõigil on üks ühine joon: nad töötlevad andmeid. Alates lihtsast kalkulaatorist kuni superarvutiteni töötavad need kõik andmetega.

Sama lugu on inimestega: igas kogukonnas on nii palju riike, nii palju kultuure kui ka nii palju teadmisi.

Kuid teiste kogukondadega suhtlemiseks vajavad inimesed ühist meediumit. Inimeste jaoks on see keel JSON, mis on ühine andmeedastusmeedia programmeerimine.

Mis on JSON?

JSON tähistab J ava S cript O bject N otation. Nii et enne JSON-i mõistmist mõistame JavaScripti objekte.

Igal programmeerimiskeelel on mingi meetod sarnaste andmete koos salvestamiseks. Näiteks C-s nimetatakse neid struktuurideks.

JavaScriptis on objektid võtme-väärtuste paaride kogum, kus väärtusteks võivad olla mis tahes muutujad (arv, string, tõeväärtus), mõni muu objekt või isegi funktsioon. Objektid on objektorienteeritud programmeerimisel väga kasulikud.

Objektorienteeritud programmeerimine on "objektide" mõistel põhinev programmeerimisparadigma, mis võib sisaldada andmeid väljade kujul ja koodi protseduuride kujul.

Vaatame ühte näidet.

JavaScripti objektid määratletakse lokkisulgude abil, näiteks:

var obj = {};

Siin objon tühi objekt. Objektide loomiseks võite kasutada ka konstruktoreid, näiteks:

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

See annaks väljundi Abhishek 123 18.

Nii loote JavaScripti objektid. Kuid need objektid on ikkagi muutujad, mis on spetsiifilised ainult JavaScripti jaoks.

Kui soovite need objektid eksportida ja näiteks serverile saata, vajate nende kodeerimiseks meetodit. Vaatame, kuidas see on tehtud.

JSON Stringify

Andmete edastamiseks ühest seadmest teise ja keelest teise vajame struktureeritud, ühtset ja täpselt määratletud kokkulepet.

Kuigi JSON põhineb JS-i objektidel, peavad teatud tingimused kehtima. Õnneks ei pea te nende tingimuste pärast muretsema - kuna JavaScriptis on meil meetod nimega JSON.stringify().

Seda meetodit kasutatakse JS-objekti teisendamiseks kodeeritud stringiks, mida saab edastada kõikjal ilma andmeid kaotamata.

See võib tunduda maagiline, et mis tahes objekti saab stringi kodeerida ja kõikjale saata. Mõistame seda mõne näite põhjal põhjalikumalt.

See on stringify-meetodi prototüüp:

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

Esimene parameeter on see, valuemillist objekti soovite täpsustada. Teine ja kolmas parameeter on valikulised ning neid saab kasutada, kui soovite kohandada, kuidas see kodeeritakse (näiteks eraldaja ja taane).

Proovime meie ülaltoodud näidet lühendada.

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

See annab väljundi {"name":"Abhishek","roll_number":"123","age":18}.

Kui me kasutame vabatahtlik parameetrid, mis on meil asendada JSON.stringify(student1)koos JSON.stringify(student1, null, 2), saame midagi sellist:

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

Nende abil saate printida JSON-i loetavas vormingus. Proovime nüüd veel ühte näidet.

Siin kasutame objektimeetodeid. Objektimeetodid on objekti sees olevad funktsioonid, mida saab selle objektiga kutsuda, kasutades ülaltoodud näites toodud meetodeid:

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

See annab sama väljundi nagu esimene näide, see on Abhishek 123 18.

Objektimeetodeid saab kasutada objektiga seotud funktsioonide käivitamiseks ja objekti omaduste kasutamiseks. Proovime seda objekti kitsendada.

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

See ikkagi teile sama tulemuse, {"name":"Abhishek","roll_number":"123","age":18}.

Seega eirab stringify funktsioon objektimeetodeid. Kui soovite, et ka neid edastataks, peate need kõigepealt stringiks teisendama.

Näiteks võite helistada student1.print = student1.print.toString()ja seejärel karmistada. Siis saaksite midagi sellist:

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

Vaatleme veel ühte objekti:

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

See viskab vea öeldes Uncaught TypeError: Converting circular structure to JSON.

See juhtub, kuna võti 2 viitab tagasi objektile. Selliseid objekte nimetatakse ümmargusteks objektideks ja neid ei saa JSON-stringiks teisendada.

Siin tuleb kasuks teine ​​parameeter. Kuigi ma ei demonstreeri, kuidas see siin toimib, leiate lahenduse sellelt MDN-i lehelt.

Nii kodeerite JSON. Vaatame nüüd, kuidas JSON-i stringi sõeluda.

JSON-i sõelumine

See, kuidas JavaScripti funktsioon JSON-i kitsendab, on meil ka funktsioon selle JSON-i sõelumiseks. See on funktsiooni prototüüp:

JSON.parse(text[, reviver])

Siin on esimene parameeter JSON-string, mida tuleb sõeluda. Teine parameeter on valikuline ja see võib olla funktsioon parsitud JSON-i muutmiseks enne tagasipöördumist. Näitame seda meetodit näite abil.

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

Ja väljund on Abhishek 123 18, nii et JSON-string oli edukalt sõelutud.

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 on mitmel põhjusel parem kui XML, kuid see ei tähenda, et peaksime XML-ist loobuma. Sellegipoolest saab JSON-ist tulevikus eelistatud andmeedastusviis.

JWT - JSONi tulevik

JSON-i veebimärk (JWT) on avatud standard, mis määratleb kompaktse ja iseseisva viisi, kuidas osapoolte vahel turvaliselt teavet JSON-objektina edastada.

Seda teavet saab kontrollida ja usaldada, kuna see on digitaalselt allkirjastatud. JWT-sid saab allkirjastada salajase (HMAC-algoritmiga) või avaliku / privaatse võtmepaari abil, kasutades RSA või ECDSA.

Neid märke saab kasutada JSON-i andmete allkirjastamiseks ja saatja identiteedi kontrollimiseks. Kuna andmed on allkirjastatud, teate neid kohe, kui mõni teave on võltsitud.

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 on universaalne meedium ja see pole spetsiifiline ainult JavaScripti jaoks. JSON-i kasutatakse juba NoSQL-i andmebaasides andmete salvestamiseks JSON-vormingus.

Võrdlesime ka JSON-i ja XML-i ning nägime, miks JSON on XML-ist tõhusam ja kiirem. Tulevikus võime välja töötada veelgi paremad viisid andmete edastamiseks.

Interneti prioriteediks on kiire ja tõhus andmeedastus. Ja JSON täidab seda funktsiooni praegu väga hästi.

JSONiga saate proovida uusi asju ja rakendada erinevaid andmestruktuure - see on avatud uuendustele ja me ei tohiks kunagi katsetamist lõpetada.

Loodetavasti meeldis mulle minu artikkel. Olen selle kirjutamisega palju õppinud ja teie tänusõnad motiveerivad mind igapäevaselt. Külasta minu Interneti-kodu theabbie.github.io.