Προγραμματισμός

Τι είναι το JSON; Καλύτερη μορφή ανταλλαγής δεδομένων

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

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

Η δημοτικότητα του JSON έχει επίσης οδηγήσει σε εγγενή υποστήριξη JSON από πολλές βάσεις δεδομένων. Σχετικές βάσεις δεδομένων όπως η PostgreSQL και η MySQL αποστέλλονται τώρα με εγγενή υποστήριξη για αποθήκευση και αναζήτηση δεδομένων JSON. Οι βάσεις δεδομένων NoSQL όπως το MongoDB και το Neo4j υποστηρίζουν επίσης το JSON, αν και το MongoDB χρησιμοποιεί μια ελαφρώς τροποποιημένη, δυαδική έκδοση του JSON πίσω από τα παρασκήνια.

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

Παράδειγμα JSON

Ακολουθεί ένα παράδειγμα δεδομένων που κωδικοποιούνται στο JSON:

{

"FirstName": "Jonathan",

"Επώνυμο": "Freeman",

"LoginCount": 4,

"IsWriter": αλήθεια,

"WorksWith": ["Spantree Technology Group", ""],

"Κατοικίδια": [

    {

"Name": "Lilly",

"Τύπος": "Ρακούν"

    }

  ]

}

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

Το JSON είναι μια γενική μορφή δεδομένων με ελάχιστο αριθμό τύπων τιμής: συμβολοσειρές, αριθμούς, booleans, λίστες, αντικείμενα και null. Αν και η σημειογραφία είναι ένα υποσύνολο της JavaScript, αυτοί οι τύποι αντιπροσωπεύονται σε όλες τις κοινές γλώσσες προγραμματισμού, καθιστώντας το JSON έναν καλό υποψήφιο για τη μετάδοση δεδομένων σε κενά γλώσσας.

Αρχεία JSON

Τα δεδομένα JSON αποθηκεύονται σε αρχεία που τελειώνουν με την επέκταση .json. Σύμφωνα με το ήθος του JSON που είναι αναγνώσιμο από τον άνθρωπο, αυτά είναι απλά αρχεία κειμένου και μπορούν εύκολα να ανοίξουν και να εξεταστούν. Όπως εξηγεί το ιστολόγιο SQLizer, αυτό είναι επίσης ένα κλειδί για την ευρύτερη διαλειτουργικότητα του JSON, καθώς σχεδόν κάθε γλώσσα που μπορείτε να ονομάσετε μπορεί να διαβάσει και να επεξεργαστεί αρχεία απλού κειμένου και είναι εύκολο να τα στείλετε μέσω του Διαδικτύου.

Γιατί να χρησιμοποιήσω το JSON;

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

Στις αρχές της δεκαετίας του 2000, η ​​διαδραστικότητα στον Ιστό άρχισε να μεταμορφώνεται. Εκείνη την εποχή, το πρόγραμμα περιήγησης χρησίμευε κυρίως ως ανόητος πελάτης για την εμφάνιση πληροφοριών και ο διακομιστής έκανε όλη τη σκληρή δουλειά για να προετοιμάσει το περιεχόμενο για προβολή. Όταν ένας χρήστης έκανε κλικ σε έναν σύνδεσμο ή ένα κουμπί στο πρόγραμμα περιήγησης, θα αποσταλεί ένα αίτημα στον διακομιστή, ο διακομιστής θα προετοιμάσει τις πληροφορίες που απαιτούνται ως HTML και το πρόγραμμα περιήγησης θα καθιστούσε το HTML ως νέα σελίδα. Αυτό το μοτίβο ήταν αργό και αναποτελεσματικό, απαιτώντας από το πρόγραμμα περιήγησης να αποδώσει εκ νέου τα πάντα στη σελίδα, ακόμη και αν είχε αλλάξει μόνο ένα τμήμα της σελίδας.

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

REST εναντίον SOAP: Η σύνδεση JSON

Αρχικά, αυτά τα δεδομένα μεταφέρθηκαν σε μορφή XML (δείτε παρακάτω για παράδειγμα) χρησιμοποιώντας ένα πρωτόκολλο ανταλλαγής μηνυμάτων που ονομάζεται SOAP (Simple Object Access Protocol). Όμως η XML ήταν ρητή και δύσκολη στη διαχείριση σε JavaScript. Το JavaScript είχε ήδη αντικείμενα, που είναι ένας τρόπος έκφρασης δεδομένων μέσα στη γλώσσα, οπότε ο Ντάγκλας Κρόκφορντ πήρε ένα υποσύνολο αυτής της έκφρασης ως προδιαγραφή για μια νέα μορφή ανταλλαγής δεδομένων και το ονομάστηκε JSON. Το JSON ήταν πολύ πιο εύκολο για τους χρήστες να διαβάσουν και για την ανάλυση των προγραμμάτων περιήγησης.

Κατά τη διάρκεια της δεκαετίας του '00, μια άλλη τεχνολογία υπηρεσιών Ιστού, που ονομάζεται Representational State Transfer, ή REST, άρχισε να προσπερνά το SOAP με σκοπό τη μεταφορά δεδομένων. Ένα από τα μεγάλα πλεονεκτήματα του προγραμματισμού που χρησιμοποιούν REST APIs είναι ότι μπορείτε να χρησιμοποιήσετε πολλές μορφές δεδομένων - όχι μόνο XML, αλλά και JSON και HTML. Καθώς οι προγραμματιστές ιστού προτιμούσαν το JSON σε σχέση με το XML, το ίδιο έκαναν και υπέρ του REST έναντι του SOAP Όπως το έθεσε ο Kostyantyn Kharchenko στο ιστολόγιο Svitla, "Από πολλές απόψεις, η επιτυχία του REST οφείλεται στη μορφή JSON λόγω της εύκολης χρήσης σε διάφορες πλατφόρμες."

Σήμερα, το JSON είναι το de-facto πρότυπο για την ανταλλαγή δεδομένων μεταξύ διαδικτυακών και κινητών πελατών και υπηρεσιών back-end.

JSON εναντίον XML

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

Ιωαναθάν

Φρίμαν

  4

αληθής

Ομάδα τεχνολογίας Spantree

Λίλι

Ρακούν

Εκτός από το ότι είναι πιο ριζοσπαστική (ακριβώς δύο φορές περισσότερο σε ρήξη σε αυτήν την περίπτωση), η XML εισάγει επίσης κάποια ασάφεια κατά την ανάλυση σε μια δομή δεδομένων φιλική στη JavaScript. Η μετατροπή XML σε αντικείμενο JavaScript μπορεί να διαρκέσει από δεκάδες έως εκατοντάδες γραμμές κώδικα και τελικά απαιτεί προσαρμογή με βάση το συγκεκριμένο αντικείμενο που αναλύεται. Η μετατροπή του JSON σε αντικείμενο JavaScript απαιτεί μία γραμμή κώδικα και δεν απαιτεί προηγούμενη γνώση σχετικά με το αντικείμενο ανάλυσης.

Περιορισμοί του JSON

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

  1. Χωρίς σχήμα. Από τη μία πλευρά, αυτό σημαίνει ότι έχετε απόλυτη ευελιξία να αντιπροσωπεύετε τα δεδομένα με όποιον τρόπο θέλετε. Από την άλλη, αυτό σημαίνει ότι θα μπορούσατε να δημιουργήσετε τυχαία λάθη δεδομένων πολύ εύκολα.
  2. Μόνο ένας τύπος αριθμού: η μορφή κυμαινόμενου σημείου διπλής ακρίβειας IEEE-754. Αυτό είναι αρκετά μπουκιά, αλλά απλά σημαίνει ότι δεν μπορείτε να επωφεληθείτε από τους διαφορετικούς τύπους αριθμών που διατίθενται σε πολλές γλώσσες προγραμματισμού.
  3. Χωρίς τύπο ημερομηνίας. Αυτή η παράλειψη σημαίνει ότι οι προγραμματιστές πρέπει να καταφύγουν στη χρήση συμβόλων συμβολοσειρών ημερομηνιών, οδηγώντας σε διαφορές μορφοποίησης ή πρέπει να αντιπροσωπεύουν ημερομηνίες με τη μορφή χιλιοστών του δευτερολέπτου από την εποχή (1 Ιανουαρίου 1970).
  4. Χωρίς σχόλια. Αυτό καθιστά αδύνατο τον σχολιασμό των πεδίων ενσωματωμένα, απαιτώντας πρόσθετη τεκμηρίωση και αυξάνοντας την πιθανότητα παρεξήγησης.
  5. Πολυλογία. Ενώ το JSON είναι λιγότερο λεκτικό από το XML, δεν είναι η πιο περιεκτική μορφή ανταλλαγής δεδομένων. Για υπηρεσίες μεγάλου όγκου ή ειδικού σκοπού, θέλετε να χρησιμοποιήσετε πιο αποτελεσματικές μορφές δεδομένων.

Πότε πρέπει να χρησιμοποιώ το JSON;

Εάν γράφετε λογισμικό που επικοινωνεί με πρόγραμμα περιήγησης ή εγγενή εφαρμογή για κινητά, θα πρέπει να χρησιμοποιήσετε το JSON ως μορφή δεδομένων. Η χρήση μιας μορφής όπως το XML είναι μια ξεπερασμένη επιλογή και μια κόκκινη σημαία στο front-end και ταλέντο για κινητά που διαφορετικά θα θέλατε να προσελκύσετε.

Στην περίπτωση της επικοινωνίας από διακομιστή σε διακομιστή, ίσως καλύτερα να χρησιμοποιήσετε ένα πλαίσιο σειριοποίησης όπως το Apache Avro ή το Apache Thrift. Το JSON δεν είναι κακή επιλογή εδώ και μπορεί να είναι ακριβώς αυτό που χρειάζεστε, αλλά η απάντηση δεν είναι τόσο ξεκάθαρη όσο για τον ιστό και την κινητή επικοινωνία.

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

Το JSON είναι η πανταχού παρούσα, de facto μορφή για την αποστολή δεδομένων μεταξύ διακομιστών ιστού και προγραμμάτων περιήγησης και εφαρμογών για κινητά. Ο απλός σχεδιασμός και η ευελιξία του καθιστούν εύκολη την ανάγνωση και την κατανόηση, και στις περισσότερες περιπτώσεις, εύκολο στη χρήση στη γλώσσα προγραμματισμού της επιλογής σας. Η έλλειψη αυστηρού σχήματος επιτρέπει την ευελιξία της μορφής, αλλά αυτή η ευελιξία καθιστά μερικές φορές δύσκολο να διασφαλιστεί ότι διαβάζετε και γράφετε σωστά το JSON.

Αναλυτής JSON

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

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

Ο ιστότοπος json.org περιλαμβάνει μια ολοκληρωμένη λίστα βιβλιοθηκών κώδικα που μπορείτε να χρησιμοποιήσετε για να αναλύσετε, να δημιουργήσετε και να χειριστείτε το JSON, σε γλώσσες τόσο διαφορετικές όσο οι Python, C # και COBOL.

Βοηθητικά προγράμματα JSON

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

  • JSON Formatter: Το JSONLint θα μορφοποιήσει και θα επικυρώσει τον αυθαίρετο κωδικό JSON.
  • Πρόγραμμα προβολής JSON: Το Stack.hu διαθέτει έναν ιστότοπο που θα δημιουργήσει ένα διαδραστικό δέντρο για να σας βοηθήσει να κατανοήσετε τη δομή του κώδικα JSON.
  • Καλλυντικό JSON: Αν θέλετε να "εκτυπώσετε" τον κωδικό σας JSON, με χρωματικό συντακτικό και παρόμοια, το Prettydiff μπορεί να σας βοηθήσει.
  • Μετατροπέας JSON: Θέλετε να μετακινήσετε γρήγορα δεδομένα από μια μορφή JSON σε κάτι άλλο; Το Convertcsv.com διαθέτει εργαλεία που μπορούν να μετατρέψουν το JSON σε CSV (το οποίο μπορεί στη συνέχεια να ανοίξει στο Excel) ή XML.

Σεμινάριο JSON

Είστε έτοιμοι να καταδυθείτε και να μάθετε περισσότερα σχετικά με το πώς λειτουργεί με το JSON στις διαδραστικές εφαρμογές σας; Το Mozilla Developer Network διαθέτει ένα εξαιρετικό σεμινάριο που θα σας ξεκινήσει με JSON και JavaScript. Εάν είστε έτοιμοι να προχωρήσετε σε άλλες γλώσσες, ρίξτε μια ματιά σε οδηγό σχετικά με τη χρήση του JSON με Java (από το Baeldung), με το Python (από το DataCamp) ή με το C # (από τη Βοήθεια δοκιμών λογισμικού). Καλή τύχη!

Ο Josh Fruhlinger συνέβαλε σε αυτό το άρθρο.