Πώς να αναλύσετε το JSON σε C ++

How Parse Json C



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

Τι είναι το JSON;

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







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



Κανόνας σύνταξης JSON

Ακολουθούν οι κανόνες σύνταξης JSON:



  1. Τα δεδομένα JSON πρέπει πάντα να έχουν τη μορφή ζεύγους κλειδιού-τιμής.
  2. Τα δεδομένα JSON διαχωρίζονται με κόμματα.
  3. Ένα σφιχτό στήριγμα χρησιμοποιείται για να αντιπροσωπεύει το αντικείμενο JSON.
  4. Μια τετράγωνη αγκύλη χρησιμοποιείται για να αντιπροσωπεύει έναν πίνακα JSON.

Τι είναι το JSON Data;

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





Όνομα: Drake

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



Επέκταση αρχείου JSON

Τα δεδομένα JSON κανονικά αποθηκεύονται στο αρχείο με επέκταση .json. Για παράδειγμα, για να αποθηκεύσετε τα δεδομένα του υπαλλήλου, μπορείτε απλώς να ονομάσετε το αρχείο ως «Emplo.json». Αυτό θα ήταν ένα απλό αρχείο κειμένου. Στη συνέχεια, μπορείτε να ανοίξετε αυτό το αρχείο JSON σε οποιονδήποτε από τους αγαπημένους σας επεξεργαστές κειμένου.

Αντικείμενο JSON

Το αντικείμενο JSON δεν είναι παρά τα δεδομένα JSON που περικλείονται μέσα στα σγουρά στηρίγματα. Εδώ είναι ένα δείγμα αντικειμένου JSON:

{
Ονομα:Ντρέικ,
Ταυτότητα Υπαλλήλου:23547α,
Τηλέφωνο: 23547,
Τμήμα:Χρηματοδότηση
}

Ένα αντικείμενο JSON μπορεί να περιέχει πολλά δεδομένα JSON. Κάθε δεδομένο JSON διαχωρίζεται με κόμμα. Τα δεδομένα JSON αντιπροσωπεύονται ως ζεύγη κλειδιού-τιμής. Το κλειδί, δηλαδή, το όνομα και η τιμή, δηλαδή ο Drake χωρίζονται με άνω και κάτω τελεία. Στο παραπάνω παράδειγμα, υπάρχουν τέσσερα ζεύγη κλειδιών-τιμών. Το πρώτο κλειδί είναι Όνομα. Το Drake είναι η αντίστοιχη τιμή για αυτό. Ομοίως, το EmployeeID, το τηλέφωνο και το τμήμα είναι τα άλλα τρία κλειδιά.

JSON Array

Ένας πίνακας JSON μπορεί να περιέχει πολλά αντικείμενα JSON διαχωρισμένα με κόμματα. Ο πίνακας JSON περικλείεται σε μια τετράγωνη αγκύλη. Ας δούμε ένα παράδειγμα πίνακα JSON:

'Φοιτητές':[
{'όνομα':'Sean', 'επίθετο':'Καφέ'},
{'όνομα':'Ντρέικ', 'επίθετο':'Williams'},
{'όνομα':'Κάποιος', 'επίθετο':'Μυλωνάς'},
{όνομα:Πέτρος,επίθετο:Τζόνσον}
]

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

Ένα δείγμα αρχείου JSON

Τώρα, αφού καταλάβαμε δεδομένα JSON, αντικείμενα JSON, πίνακα JSON, ας δούμε ένα παράδειγμα αρχείου JSON:

{
όνομα:Σον,
επίθετο:καφέ,
Φοιτητική ταυτότητα: 21453,
Τμήμα:Υπολογιστής Sc.,
μαθήματα:[Μαθηματικά,Phy,Chem]
}

Ανάλυση βιβλιοθηκών σε C ++:

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

  1. https://github.com/nlohmann/json
  2. https://github.com/Tencent/rapidjson/

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

Παραδείγματα

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

  • Παράδειγμα-1: Ανάλυση JSON σε C ++
  • Παράδειγμα-2: Αναλύστε και σειριοποιήστε το JSON σε C ++
  • Παράδειγμα-3: Ανάλυση JSON σε C ++

Για το Παράδειγμα-1 και το Παράδειγμα-2, θα χρησιμοποιήσουμε τη βιβλιοθήκη nlohmann. Στην περίπτωση του Παραδείγματος-3, θα χρησιμοποιήσουμε τη βιβλιοθήκη RapidJSON.

Παράδειγμα-1: Ανάλυση JSON σε C ++

Σε αυτό το παράδειγμα προγράμματος, θα δείξουμε πώς να αποκτήσετε πρόσβαση σε τιμές δεδομένων JSON σε C ++.

#περιλαμβάνω
#include 'json.hpp'

χρησιμοποιώντας json=nlohmann::json?

intκύριος()
{

// jdΕργαζόμενοι
json jdΕργαζόμενοι=
{
{'όνομα','Sean'},
{'επίθετο','Καφέ'},
{'StudentID',21453},
{'Τμήμα','Υπολογιστής Sc.'}
}?

// Πρόσβαση στις τιμές
ώρες::σειράfName=jdΕργαζόμενοι.αξία('όνομα', 'ωπα')?
ώρες::σειράl Όνομα=jdΕργαζόμενοι.αξία('επίθετο', 'ωπα')?
intsID=jdΕργαζόμενοι.αξία('StudentID', 0)?
ώρες::σειράτμήμα=jdΕργαζόμενοι.αξία('Τμήμα', 'ωπα')?

// Εκτυπώστε τις τιμές
ώρες::κόστος << 'Ονομα: ' <<fName<<ώρες::endl?
ώρες::κόστος << 'Επίθετο: ' <<l Όνομα<<ώρες::endl?
ώρες::κόστος << 'Φοιτητική ταυτότητα:' <<sID<<ώρες::endl?
ώρες::κόστος << 'Τμήμα:' <<τμήμα<<ώρες::endl?

ΕΠΙΣΤΡΟΦΗ 0?
}

Παράδειγμα-2: Αναλύστε και σειριοποιήστε το JSON σε C ++

Σε αυτό το παράδειγμα προγράμματος, θα δούμε πώς να αναλύσουμε και να σειριοποιήσουμε το JSON σε C ++. Χρησιμοποιούμε json :: parse () για να αναλύσουμε τα δεδομένα JSON.

#περιλαμβάνω
#include 'json.hpp'
#περιλαμβάνω

χρησιμοποιώντας json=nlohmann::json?

intκύριος()
{
// Εδώ είναι ένα κείμενο JSON
απανθρακώνωκείμενο[] =R'(
{
'
Βιβλίο': {
'
Πλάτος': 450,
'
Υψος': 30,
'
Τίτλος':'Γειά σου Κόσμε',
'
είναιΒιογραφία': ψευδές,
'
NumOfCopies': 4,
'
LibraryIDs': [2319, 1406, 3854, 987]
}
}
) '
?

// Ας αναλύσουμε και να σειριοποιήσουμε το JSON
json j_complete=json::αναλύω πρόταση(κείμενο)?
ώρες::κόστος <<ώρες::setw(4) <<j_complete<<ώρες::endl?
}

Παράδειγμα-3: Ανάλυση JSON σε C ++

Τώρα, θα δείξουμε πώς να αναλύσουμε τη συμβολοσειρά JSON χρησιμοποιώντας τη βιβλιοθήκη RapidJSON. Το RapidJSON ήταν αρχικά εμπνευσμένο από το RapidXML. Σε αυτό το παράδειγμα προγράμματος, αναλύουμε μια συμβολοσειρά JSON σε DOM. Έχουμε δηλώσει mydoc τύπου εγγράφου και στη συνέχεια χρησιμοποιούμε τη μέθοδο mydoc.parse () για να αναλύσουμε τη συμβολοσειρά JSON.

#περιλαμβάνω
#include 'Rapidjson/Writer.h'
#include 'Rapidjson/document.h'
#include 'quickjson/stringbuffer.h'

χρησιμοποιώντας το όνομα χώρου quickjson?

intκύριος()
{

const απανθρακώνω*json= '{'όνομα':'Σον','επίθετο':'καφέ','εντ': 21453,
'
τμήμα':'Υπολογιστής Sc.'}'?

// Αναλύστε τη συμβολοσειρά JSON στο DOM
Έγγραφο mydoc?
μυδοκ.Αναλύω πρόταση(json)?

// DOM σε συμβολοσειρά
StampBuffer buffer?
Συγγραφέας<StringBuffer>>συγγραφέας(ρυθμιστής)?

μυδοκ.Αποδέχομαι(συγγραφέας)?

// Εκτυπώστε την έξοδο
ώρες::κόστος <<ρυθμιστής.GetString() <<ώρες::endl?

ΕΠΙΣΤΡΟΦΗ 0?
}

συμπέρασμα

Σε αυτό το άρθρο, έχουμε συζητήσει εν συντομία JSON δεδομένα, αντικείμενο, πίνακας και σύνταξη. Όπως γνωρίζουμε, δεν υπάρχει εγγενής λύση για την ανάλυση δεδομένων JSON σε C ++. χρησιμοποιήσαμε δύο διαφορετικές βιβλιοθήκες για την ανάλυση δεδομένων JSON σε C ++. Εξετάσαμε τρία διαφορετικά παραδείγματα για να δείξουμε τον μηχανισμό ανάλυσης δεδομένων JSON στο C ++. Σε σύγκριση με τη βιβλιοθήκη nlohmann, το RapidJSON είναι μικρό, γρήγορο και φιλικό προς τη μνήμη.