Παράδειγμα Stringify JSON - Τρόπος ανάλυσης ενός αντικειμένου JSON με JS

Υπάρχουν τόσες πολλές γλώσσες προγραμματισμού και κάθε γλώσσα έχει τις δικές της δυνατότητες. Αλλά όλα έχουν ένα κοινό κοινό: επεξεργάζονται δεδομένα. Από μια απλή αριθμομηχανή έως υπερυπολογιστές, όλοι εργάζονται σε δεδομένα.

Είναι το ίδιο με τους ανθρώπους: υπάρχουν τόσες πολλές χώρες, τόσες πολλές κουλτούρες και τόση γνώση σε κάθε κοινότητα.

Αλλά για να επικοινωνήσουν με άλλες κοινότητες, οι άνθρωποι χρειάζονται ένα κοινό μέσο. Η γλώσσα είναι για τον άνθρωπο τι είναι το JSON στον προγραμματισμό, ένα κοινό μέσο μετάδοσης δεδομένων.

Τι είναι το JSON;

Το JSON σημαίνει J ava S cript O bject N otation. Πριν κατανοήσουμε λοιπόν το JSON, ας καταλάβουμε αντικείμενα σε JavaScript.

Κάθε γλώσσα προγραμματισμού έχει κάποια μέθοδο αποθήκευσης παρόμοιων δεδομένων μαζί. Στο C, για παράδειγμα, ονομάζονται δομές.

Στο JavaScript, τα αντικείμενα είναι μια συλλογή ζευγών κλειδιών-τιμών, όπου οι τιμές μπορεί να είναι οποιαδήποτε μεταβλητή (αριθμός, συμβολοσειρά, boolean), ένα άλλο αντικείμενο ή ακόμα και μια συνάρτηση. Τα αντικείμενα είναι πολύ χρήσιμα στον αντικειμενοστρεφή προγραμματισμό.

Ο αντικειμενοστρεφής προγραμματισμός είναι ένα πρότυπο προγραμματισμού που βασίζεται στην έννοια των «αντικειμένων», το οποίο μπορεί να περιέχει δεδομένα, με τη μορφή πεδίων και κώδικα, με τη μορφή διαδικασιών.

Ας δούμε ένα παράδειγμα.

Στο JavaScript, τα αντικείμενα ορίζονται χρησιμοποιώντας σγουρά τιράντες, για παράδειγμα:

var obj = {};

Εδώ, objείναι ένα κενό αντικείμενο. Μπορείτε επίσης να δημιουργήσετε αντικείμενα χρησιμοποιώντας κατασκευαστές, για παράδειγμα:

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

Αυτό θα δώσει την έξοδο Abhishek 123 18.

Έτσι δημιουργείτε αντικείμενα σε JavaScript. Αλλά αυτά τα αντικείμενα εξακολουθούν να είναι μεταβλητές που αφορούν μόνο τη JavaScript.

Εάν θέλετε να εξαγάγετε αυτά τα αντικείμενα και για παράδειγμα να τα στείλετε σε διακομιστή, χρειάζεστε μια μέθοδο για την κωδικοποίησή τους. Ας δούμε πώς γίνεται.

JSON Stringify

Για τη μετάδοση δεδομένων από τη μία συσκευή στην άλλη και από τη μία γλώσσα στην άλλη, χρειαζόμαστε μια δομημένη, ομοιόμορφη και καλά καθορισμένη σύμβαση.

Αν και το JSON βασίζεται σε αντικείμενα JS, ορισμένες προϋποθέσεις πρέπει να είναι έγκυρες. Ευτυχώς, δεν χρειάζεται να ανησυχείτε για αυτές τις συνθήκες - επειδή στο JavaScript, έχουμε μια μέθοδο που ονομάζεται JSON.stringify().

Αυτή η μέθοδος χρησιμοποιείται για τη μετατροπή ενός αντικειμένου JS σε κωδικοποιημένη συμβολοσειρά που μπορεί να μεταδοθεί οπουδήποτε χωρίς απώλεια δεδομένων.

Μπορεί να φαίνεται μαγικό ότι οποιοδήποτε αντικείμενο μπορεί να κωδικοποιηθεί σε μια συμβολοσειρά και να σταλεί οπουδήποτε. Ας το κατανοήσουμε πιο αναλυτικά μέσα από μερικά παραδείγματα.

Αυτό είναι το πρωτότυπο της μεθόδου stringify:

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

Η πρώτη παράμετρος είναι valueτο αντικείμενο που θέλετε να διαμορφώσετε. Η δεύτερη και η τρίτη παράμετρος είναι προαιρετικές και μπορούν να χρησιμοποιηθούν εάν θέλετε να προσαρμόσετε τον τρόπο με τον οποίο θα κωδικοποιηθεί (για παράδειγμα, το διαχωριστικό και η εσοχή).

Ας προσπαθήσουμε να ενισχύσουμε το παραπάνω παράδειγμα.

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

Αυτό θα δώσει την έξοδο {"name":"Abhishek","roll_number":"123","age":18}.

Εάν χρησιμοποιήσουμε τις προαιρετικές παραμέτρους, δηλαδή αντικαθιστούμε JSON.stringify(student1)με JSON.stringify(student1, null, 2), θα έχουμε κάτι σαν αυτό:

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

Μπορείτε να τα χρησιμοποιήσετε για να εκτυπώσετε το JSON σε αναγνώσιμη μορφή. Τώρα ας δοκιμάσουμε ένα ακόμη παράδειγμα.

Εδώ θα χρησιμοποιούμε μεθόδους αντικειμένων. Οι μέθοδοι αντικειμένων είναι συναρτήσεις μέσα σε ένα αντικείμενο που μπορούν να κληθούν με αυτό το αντικείμενο, χρησιμοποιώντας τις μεθόδους στο παραπάνω παράδειγμα:

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

Αυτό θα δώσει την ίδια έξοδο με το πρώτο παράδειγμα, δηλαδή Abhishek 123 18.

Οι μέθοδοι αντικειμένων μπορούν να χρησιμοποιηθούν για την εκτέλεση συναρτήσεων που σχετίζονται με ένα αντικείμενο και τη χρήση των ιδιοτήτων του αντικειμένου. Ας προσπαθήσουμε να κάνουμε αυστηρότερο αυτό το αντικείμενο.

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

Είναι ακόμα θα σας δώσει το ίδιο αποτέλεσμα, {"name":"Abhishek","roll_number":"123","age":18}.

Έτσι, οι μέθοδοι αντικειμένων αγνοούνται από τη συνάρτηση stringify. Εάν θέλετε να μεταδοθούν και αυτά, πρέπει πρώτα να τα μετατρέψετε σε συμβολοσειρά.

Για παράδειγμα, θα μπορούσατε να καλέσετε student1.print = student1.print.toString()και, στη συνέχεια, να κάνετε string. Τότε θα έχετε κάτι τέτοιο:

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

Ας εξετάσουμε ένα άλλο αντικείμενο:

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

Αυτό θα ρίξει ένα ρητό σφάλματος Uncaught TypeError: Converting circular structure to JSON.

Αυτό συμβαίνει επειδή το key2 αναφέρεται στο obj. Τέτοια αντικείμενα είναι γνωστά ως κυκλικά αντικείμενα και δεν μπορούν να μετατραπούν σε συμβολοσειρά JSON.

Αυτό είναι όπου η δεύτερη παράμετρος είναι βολική. Αν και δεν θα δείξω πώς λειτουργεί εδώ, μπορείτε να βρείτε τη λύση σε αυτήν τη σελίδα MDN.

Έτσι κωδικοποιείτε το JSON. Τώρα ας δούμε πώς να αναλύσουμε μια συμβολοσειρά JSON.

Αναλύστε το JSON

Ακριβώς πώς η JavaScript έχει μια συνάρτηση για την ενίσχυση του JSON, έχουμε επίσης μια συνάρτηση για την ανάλυση αυτού του αυστηρού JSON. Αυτό είναι το πρωτότυπο της συνάρτησης:

JSON.parse(text[, reviver])

Εδώ, η πρώτη παράμετρος είναι η συμβολοσειρά JSON που πρέπει να αναλυθεί. Η δεύτερη παράμετρος είναι προαιρετική και μπορεί να είναι μια συνάρτηση για τροποποίηση του αναλυμένου JSON πριν επιστρέψετε. Ας δείξουμε αυτήν τη μέθοδο χρησιμοποιώντας ένα παράδειγμα.

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

Και η έξοδος θα είναι Abhishek 123 18, οπότε η συμβολοσειρά JSON αναλύθηκε με επιτυχία.

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 είναι καλύτερο από το XML για πολλούς λόγους, αλλά αυτό δεν σημαίνει ότι πρέπει να εγκαταλείψουμε το XML. Ωστόσο, το JSON θα γίνει η προτιμώμενη μορφή μετάδοσης δεδομένων στο μέλλον.

JWT - Το μέλλον της JSON

Το JSON Web Token (JWT) είναι ένα ανοιχτό πρότυπο που καθορίζει έναν συμπαγή και αυτόνομο τρόπο για την ασφαλή μετάδοση πληροφοριών μεταξύ των μερών ως αντικείμενο JSON.

Αυτές οι πληροφορίες μπορούν να επαληθευτούν και να εμπιστευθούν, επειδή έχουν ψηφιακή υπογραφή Τα JWT μπορούν να υπογραφούν χρησιμοποιώντας ένα μυστικό (με τον αλγόριθμο HMAC) ή ένα ζεύγος δημόσιου / ιδιωτικού κλειδιού χρησιμοποιώντας RSA ή ECDSA.

Αυτά τα διακριτικά μπορούν να χρησιμοποιηθούν για την υπογραφή δεδομένων JSON και την επαλήθευση της ταυτότητας του αποστολέα. Δεδομένου ότι τα δεδομένα είναι υπογεγραμμένα, εάν τυχόν δεδομένα έχουν παραβιαστεί, θα τα γνωρίζετε αμέσως.

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 είναι ένα καθολικό μέσο και δεν αφορά μόνο τη JavaScript. Το JSON χρησιμοποιείται ήδη σε βάσεις δεδομένων NoSQL για την αποθήκευση δεδομένων σε μορφή JSON.

Συγκρίναμε επίσης το JSON και το XML και είδαμε γιατί το JSON είναι πιο αποδοτικό και ταχύτερο από το XML. Στο μέλλον, ενδέχεται να αναπτύξουμε ακόμη καλύτερους τρόπους μετάδοσης δεδομένων.

Ο ρυθμός ανάπτυξης του Διαδικτύου, η αποτελεσματική μεταφορά δεδομένων θα είναι η υψηλότερη προτεραιότητα. Και το JSON εξυπηρετεί αυτήν τη λειτουργία πολύ καλά προς το παρόν.

Μπορείτε να δοκιμάσετε νέα πράγματα με το JSON και να εφαρμόσετε διαφορετικές δομές δεδομένων - είναι ανοιχτό στην καινοτομία και δεν πρέπει ποτέ να σταματήσουμε να πειραματίζουμε.

Ελπίζω να σας άρεσε το άρθρο μου. Έχω μάθει πολλά γράφοντας το και η εκτίμησή σας με ενθαρρύνει καθημερινά, Επισκεφτείτε το σπίτι μου στο Διαδίκτυο theabbie.github.io.