JSON Diff: σύγκριση αντικειμένων JSON
Επικολλήστε δύο έγγραφα JSON για να δείτε ακριβώς τι άλλαξε. Κάθε διαφορά εμφανίζεται με τη διαδρομή της, όπως $.users[2].email, και η μορφοποίηση ή η σειρά των κλειδιών δεν προκαλούν ποτέ ψευδείς συναγερμούς.
Τρέχει στον browser σαςΧωρίς εγγραφήΤίποτα δεν ανεβαίνει
Διαδρομές που άλλαξαν
| Αλλαγή | Διαδρομή | Παλιά τιμή | Νέα τιμή |
|---|
Πώς να χρησιμοποιήσετε: JSON Diff
- Επικολλήστε το αρχικό JSON αριστερά και το τροποποιημένο JSON δεξιά ή ανοίξτε δύο αρχεία.
- Τα συντακτικά σφάλματα εμφανίζονται κάτω από κάθε πλαίσιο με γραμμή και στήλη, ώστε να τα διορθώνετε γρήγορα.
- Διαβάστε τον πίνακα Διαδρομές που άλλαξαν: κάθε γραμμή δείχνει αν μια τιμή προστέθηκε, αφαιρέθηκε ή άλλαξε, με την παλιά και τη νέα τιμή.
- Τσεκάρετε Αγνόηση σειράς πινάκων όταν οι λίστες είναι σύνολα, για παράδειγμα tags ή δικαιώματα.
- Κάντε κύλιση στην προβολή δίπλα-δίπλα για να δείτε τις αλλαγές στο πλαίσιό τους ή αντιγράψτε τη λίστα αλλαγών ως JSON.
Γιατί μια δομική σύγκριση JSON είναι καλύτερη από μια σύγκριση κειμένου
Μια απλή σύγκριση κειμένου συγκρίνει χαρακτήρες και γραμμές, οπότε δύο αρχεία JSON με τα ίδια δεδομένα μπορεί να φαίνονται εντελώς διαφορετικά αν το ένα είναι συμπιεσμένο, έχει άλλες εσοχές ή κλειδιά σε άλλη σειρά. Το εργαλείο αναλύει πρώτα και τα δύο έγγραφα και συγκρίνει τα δεδομένα: τα αντικείμενα συγκρίνονται κλειδί προς κλειδί ανεξαρτήτως σειράς, ενώ αριθμοί, strings, booleans και null συγκρίνονται κατά τιμή. Αναφέρονται μόνο οι πραγματικές αλλαγές.
Πώς αναφέρονται οι αλλαγές
Κάθε διαφορά παίρνει μια θέση σε στυλ JSONPath, όπως $.owner.email ή $.items[3].price, και έναν από τρεις τύπους:
- προστέθηκε: το κλειδί ή το στοιχείο του πίνακα υπάρχει μόνο στο τροποποιημένο JSON.
- αφαιρέθηκε: υπάρχει μόνο στο αρχικό JSON.
- άλλαξε: υπάρχει και στα δύο αλλά η τιμή διαφέρει, συμπεριλαμβανομένων αλλαγών τύπου, όπως ένα string που έγινε αριθμός.
Οι πίνακες ευθυγραμμίζονται με αλγόριθμο μέγιστης κοινής υπακολουθίας (LCS), οπότε η εισαγωγή ενός στοιχείου στην αρχή μιας λίστας αναφέρεται ως μία προσθήκη αντί να σημειώνεται κάθε επόμενο στοιχείο ως αλλαγμένο.
Αγνόηση της σειράς πινάκων
Πολλά APIs επιστρέφουν λίστες των οποίων η σειρά δεν έχει σημασία, όπως ρόλους, tags ή IDs. Με ενεργή την Αγνόηση σειράς πινάκων, οι πίνακες συγκρίνονται ως συλλογές: ένα στοιχείο μετράει ως προστιθέμενο ή αφαιρεμένο μόνο αν δεν έχει ίσο αντίστοιχο στην άλλη πλευρά. Η προβολή δίπλα-δίπλα ταξινομεί τότε τα στοιχεία των πινάκων ώστε οι ίσες λίστες να ευθυγραμμίζονται.
Τυπικές χρήσεις
Συγκρίνετε αποκρίσεις API μεταξύ staging και production, ελέγξτε τι άλλαξε ένα migration σε ένα αρχείο ρυθμίσεων, δείτε τις διαφορές ανάμεσα σε δύο αρχεία package.json ή tsconfig και κάντε debug σε snapshot tests.
Συχνές ερωτήσεις
Παίζει ρόλο η σειρά των κλειδιών στη σύγκριση JSON;
{"a":1,"b":2} και {"b":2,"a":1} αναφέρονται ως ίσα. Η σειρά των πινάκων μετράει από προεπιλογή, επειδή οι πίνακες είναι διατεταγμένοι, αλλά μπορείτε να την απενεργοποιήσετε με την Αγνόηση σειράς πινάκων.Ανεβαίνει το JSON μου σε server;
Τι σημαίνουν διαδρομές όπως $.users[2].email;
$ είναι η ρίζα του εγγράφου, το .users είναι ένα κλειδί και το [2] είναι το τρίτο στοιχείο ενός πίνακα (οι δείκτες ξεκινούν από το 0). Τα κλειδιά με κενά ή ειδικούς χαρακτήρες γράφονται σε αγκύλες, όπως $["first name"].Είναι το 1 ίσο με το 1.0;
1 και "1", είναι διαφορετικά και αναφέρονται ως αλλαγή.