JSON Stringify-eksempel - Sådan analyseres et JSON-objekt med JS

Der er så mange programmeringssprog, og hvert sprog har sine egne funktioner. Men alle har en ting til fælles: de behandler data. Fra en simpel lommeregner til supercomputere arbejder de alle på data.

Det er det samme med mennesker: der er så mange lande, så mange kulturer og så meget viden inden for hvert samfund.

Men for at kommunikere med andre samfund har folk brug for et fælles medium. Sprog er for mennesker, hvad JSON er for programmering, et fælles medium for datatransmission.

Hvad er JSON?

JSON står for J ava S cript O bject N otation . Så før vi forstår JSON, lad os forstå objekter i JavaScript.

Hvert programmeringssprog har en eller anden metode til lagring af lignende data sammen. I C kaldes de for eksempel strukturer.

I JavaScript er objekter en samling af nøgleværdipar, hvor værdier kan være en hvilken som helst variabel (nummer, streng, boolsk), et andet objekt eller endda en funktion. Objekter er meget nyttige i objektorienteret programmering.

Objektorienteret programmering er et programmeringsparadigme baseret på begrebet "objekter", som kan indeholde data i form af felter og kode i form af procedurer.

Lad os se på et eksempel.

I JavaScript defineres objekter ved hjælp af krøllede seler, for eksempel:

var obj = {};

Her objer en tom genstand. Du kan også oprette objekter ved hjælp af konstruktører, for eksempel:

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

Dette ville give output Abhishek 123 18.

Sådan opretter du objekter i JavaScript. Men disse objekter er stadig variabler, der kun er specifikke for JavaScript.

Hvis du vil eksportere disse objekter og for eksempel sende dem til en server, har du brug for en metode til at kode dem. Lad os se, hvordan det er gjort.

JSON Stringify

For at overføre data fra en enhed til en anden og et sprog til en anden har vi brug for en struktureret, ensartet og veldefineret konvention.

Selvom JSON er baseret på JS-objekter, skal visse betingelser være gyldige. Heldigvis behøver du ikke være bekymret for disse forhold - for i JavaScript har vi en metode kaldet JSON.stringify().

Denne metode bruges til at konvertere et JS-objekt til en kodet streng, som kan transmitteres hvor som helst uden at miste data.

Det kan virke magisk, at ethvert objekt kan kodes i en streng og sendes hvor som helst. Lad os forstå det mere dybtgående gennem nogle eksempler.

Dette er prototypen på strengmetoden:

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

Den første parameter er valuedet objekt, du vil strenge. Den anden og tredje parameter er valgfri og kan bruges, hvis du vil tilpasse, hvordan den bliver kodet (for eksempel separator og indrykning).

Lad os prøve at stramme vores ovenstående eksempel.

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

Dette giver output {"name":"Abhishek","roll_number":"123","age":18}.

Hvis vi bruger de valgfri parametre, det er vi erstatter JSON.stringify(student1)med JSON.stringify(student1, null, 2), får vi noget som dette:

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

Du kan bruge disse til at udskrive JSON i et læsbart format. Lad os nu prøve endnu et eksempel.

Her bruger vi objektmetoder. Objektmetoder er funktioner inden for et objekt, der kan kaldes med det objekt ved hjælp af metoderne i ovenstående eksempel:

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

Dette vil give det samme output som første eksempel, der er, Abhishek 123 18.

Objektmetoder kan bruges til at udføre funktioner tilknyttet et objekt og bruge objektets egenskaber. Lad os prøve at strenge dette 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);

Det vil stadig give dig den samme effekt, {"name":"Abhishek","roll_number":"123","age":18}.

Objektmetoderne ignoreres således af stringify-funktionen. Hvis du også ønsker, at de skal transmitteres, skal du først konvertere dem til en streng.

For eksempel kan du ringe student1.print = student1.print.toString()og derefter strenge. Så får du noget som dette:

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

Lad os overveje et andet objekt:

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

Dette vil kaste en fejl ved at sige Uncaught TypeError: Converting circular structure to JSON.

Dette sker, fordi key2 henviser til obj. Sådanne objekter er kendt som cirkulære objekter, og de kan ikke konverteres til en JSON-streng.

Det er her, den anden parameter er praktisk. Selvom jeg ikke demonstrerer, hvordan det fungerer her, kan du finde løsningen på denne MDN-side.

Sådan koder du JSON. Lad os nu se, hvordan man analyserer en JSON-streng.

JSON-analyse

Ligesom JavaScript har en funktion til at strenge JSON, har vi også en funktion til at parsere den strengede JSON. Dette er funktionsprototypen:

JSON.parse(text[, reviver])

Her er den første parameter JSON-strengen, som skal analyseres. Den anden parameter er valgfri og kan være en funktion til at ændre den parsede JSON, før den vender tilbage. Lad os demonstrere denne metode ved hjælp af et eksempel.

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

Og output vil være Abhishek 123 18, så JSON-strengen blev parset med succes.

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 er bedre end XML af mange grunde, men det betyder ikke, at vi skal opgive XML. Alligevel vil JSON blive den foretrukne form for datatransmission i fremtiden.

JWT - JSONs fremtid

JSON Web Token (JWT) er en åben standard, der definerer en kompakt og selvstændig måde til sikker transmission af information mellem parter som et JSON-objekt.

Disse oplysninger kan verificeres og stole på, fordi de er signeret digitalt. JWT'er kan underskrives ved hjælp af en hemmelighed (med HMAC-algoritmen) eller et offentligt / privat nøglepar ved hjælp af RSA eller ECDSA.

Disse tokens kan bruges til at underskrive JSON-data og verificere afsenderens identitet. Da dataene er underskrevet, ved du, at der er blevet manipuleret med nogen data, ved du det med det samme.

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 er et universelt medium og er ikke kun specifikt for JavaScript. JSON bruges allerede i NoSQL-databaser til at gemme data i JSON-format.

Vi sammenlignede også JSON og XML og så, hvorfor JSON er mere effektiv og hurtigere end XML. I fremtiden kan vi udvikle endnu bedre måder at overføre data på.

Den hastighed, hvormed internettet vokser, vil effektiv dataoverførsel være den højeste prioritet. Og JSON tjener den funktion rigtig godt for nu.

Du kan prøve nye ting med JSON og implementere forskellige datastrukturer - det er åbent for innovation, og vi bør aldrig stoppe med at eksperimentere.

Håber du kunne lide min artikel. Jeg har lært meget ved at skrive det, og din påskønnelse motiverer mig hver dag. Besøg mit internethjem theabbie.github.io.