UltKit
Εικόνα11
PDF13
Έγγραφα και δεδομένα7
Βίντεο6
Ήχος4
Περισσότερα εργαλεία22

Μορφοποίηση και επικύρωση JSON

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

Έξοδος

0 χαρακτήρες · 0 λέξεις · 0 γραμμές

0 χαρακτήρες · 0 λέξεις · 0 γραμμές

Εκτελείται εξ ολοκλήρου σε αυτήν την καρτέλα του προγράμματος περιήγησης. Το κείμενό σας δεν ανεβαίνει ούτε αποθηκεύεται πουθενά.

Τύποι τιμών JSON

Το RFC 8259 επιτρέπει ακριβώς αυτές τις τιμές. Τα αντικείμενα και οι πίνακες φωλιάζουν· όλα τα άλλα είναι φύλλα.

ΤύποςΠαράδειγμαΚανόνας
Αντικείμενο{"id": 7, "tags": ["a"]}Τα κλειδιά πρέπει να είναι συμβολοσειρές σε διπλά εισαγωγικά· τα μέλη χωρίζονται με κόμματα, χωρίς κόμμα στο τέλος.
Πίνακας[1, "two", null]Διατεταγμένη λίστα τιμών οποιουδήποτε τύπου, επιτρέπονται μικτοί τύποι.
Συμβολοσειρά"caf\u00e9 \"quoted\""Μόνο διπλά εισαγωγικά· οι χαρακτήρες ελέγχου πρέπει να έχουν escape· τα escape \u χρησιμοποιούν τέσσερα δεκαεξαδικά ψηφία.
Αριθμός-12.5e3Μόνο δεκαδικοί: προαιρετικό μείον, χωρίς αρχικά μηδενικά, προαιρετικό κλασματικό μέρος και εκθέτης. Όχι NaN ή Infinity.
true, false και nulltrueΠεζά, χωρίς εισαγωγικά.

Τι απορρίπτει ο parser

Κάθε είσοδος παρακάτω δόθηκε στο ίδιο JSON.parse που χρησιμοποιεί ο μορφοποιητής κατά τη δημιουργία αυτής της σελίδας.

ΕίσοδοςΠρόβλημαJSON.parse
{"a": 1,}Κόμμα στο τέλοςΑπορρίπτεται
{'a': 1}Συμβολοσειρές σε μονά εισαγωγικάΑπορρίπτεται
{"a": 1 /* note */}ΣχόλιαΑπορρίπτεται
{a: 1}Κλειδί χωρίς εισαγωγικάΑπορρίπτεται
{"n": NaN}Το NaN δεν είναι αριθμός JSONΑπορρίπτεται
{"n": 012}Αρχικό μηδενικόΑπορρίπτεται
{"n": 0x1F}Δεκαεξαδικός αριθμόςΑπορρίπτεται

Escape σε συμβολοσειρές JSON

ΧαρακτήραςΓραφή σε JSON
Διπλό εισαγωγικό"\""
Ανάστροφη κάθετος"\\"
Αλλαγή γραμμής"\n"
Tab"\t"
Επιστροφή φορέα"\r"
Χαρακτήρας ελέγχου U+0001"\u0001"
Κάθετος (το escape είναι προαιρετικό)"/"
Γράμμα εκτός ASCII (δεν χρειάζεται escape)"é"

Οι κανόνες που ακολουθεί ένα έγκυρο έγγραφο JSON

Το JSON ορίζεται από το RFC 8259 (ουσιαστικά ταυτόσημο με το ECMA-404). Ένα έγγραφο είναι μία μόνο τιμή: αντικείμενο, πίνακας, συμβολοσειρά, αριθμός, true, false ή null. Τα κλειδιά των αντικειμένων είναι πάντα συμβολοσειρές σε διπλά εισαγωγικά. Οι συμβολοσειρές χρησιμοποιούν μόνο διπλά εισαγωγικά και πρέπει να κάνουν escape στο εισαγωγικό, στην ανάστροφη κάθετο και σε κάθε χαρακτήρα ελέγχου κάτω από το U+0020. Έτσι, οι χαρακτήρες tab και οι αλλαγές γραμμής μέσα σε συμβολοσειρά γράφονται ως \t και \n. Το RFC 8259 απαιτεί επίσης UTF-8 για το JSON που ανταλλάσσεται μεταξύ συστημάτων.

Οι αριθμοί είναι δεκαδικοί: χωρίς αρχικά μηδενικά, χωρίς δεκαεξαδικούς, χωρίς NaN ή Infinity και χωρίς πρόσημο συν μπροστά. Η μορφή δεν έχει σχόλια ούτε τελικά κόμματα. Αυτοί οι δύο τελευταίοι κανόνες προκαλούν τα περισσότερα σφάλματα στην πράξη, επειδή τα αντικείμενα της JavaScript, το JSON5 και πολλά αρχεία ρυθμίσεων επιτρέπουν και τα δύο. Ο πίνακας αναφοράς παρακάτω προέκυψε δίνοντας κάθε συνηθισμένο λάθος στον ίδιο parser που χρησιμοποιεί ο μορφοποιητής.

Μορφοποίηση, ελαχιστοποίηση, ταξινόμηση

Η εμφανίσιμη μορφοποίηση (pretty-print) προσθέτει αλλαγές γραμμής και εσοχές ώστε η δομή να διαβάζεται εύκολα. Τα δύο κενά είναι το συνηθέστερο στυλ στα έργα JavaScript, τα τέσσερα κενά η συνήθης επιλογή με το json.dumps(indent=4) της Python, ενώ τα tab αφήνουν τον καθένα να διαλέξει πλάτος. Η ελαχιστοποίηση αφαιρεί κάθε περιττό κενό, μειώνοντας το μέγεθος των δεδομένων API και επιτρέποντας σε ένα έγγραφο να χωρέσει σε μία γραμμή για αρχεία καταγραφής ή μεταβλητές περιβάλλοντος.

Η ταξινόμηση κλειδιών τακτοποιεί αλφαβητικά τα μέλη κάθε αντικειμένου, αναδρομικά. Τα αντικείμενα JSON εξ ορισμού δεν έχουν σειρά, οπότε η ταξινόμηση δεν αλλάζει το νόημα, αλλά διευκολύνει πολύ τη σύγκριση δύο εγγράφων από διαφορετικά συστήματα. Έχετε υπόψη ότι η ανάλυση μετατρέπει τους αριθμούς σε doubles της JavaScript: οι ακέραιοι πάνω από 2^53 (9.007.199.254.740.992), όπως ορισμένα αναγνωριστικά βάσεων δεδομένων, χάνουν ακρίβεια κατά την αναμορφοποίηση, γι' αυτό κρατήστε τους ως συμβολοσειρές.

Από JSON σε άλλες μορφές

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

Συχνές ερωτήσεις

Γιατί το εργαλείο απορρίπτει το JSON μου όταν έχει σχόλια;
Το τυπικό JSON δεν έχει σύνταξη σχολίων· το RFC 8259 την αφήνει εσκεμμένα απ' έξω. Αφαιρέστε τα σχόλια ή κρατήστε το αρχείο ως JSONC ή JSON5, αν το εργαλείο που το διαβάζει υποστηρίζει αυτές τις μορφές.
Τι σημαίνει «Unexpected token» σε ένα σφάλμα JSON;
Ο parser βρήκε χαρακτήρα που δεν μπορεί να εμφανιστεί σε εκείνη τη θέση, όπως μονό εισαγωγικό, τελικό κόμμα πριν από το } ή κλειδί χωρίς εισαγωγικά. Η γραμμή και η στήλη που εμφανίζονται δείχνουν αυτόν τον χαρακτήρα.
Αλλάζει η ταξινόμηση κλειδιών τα δεδομένα μου;
Όχι. Η σειρά των μελών ενός αντικειμένου δεν έχει νόημα στο JSON, άρα το ταξινομημένο έγγραφο είναι ισοδύναμο. Η σειρά των πινάκων έχει νόημα και δεν αλλάζει ποτέ.
Γιατί άλλαξε ένας μεγάλος αριθμός μετά τη μορφοποίηση;
Η JavaScript αποθηκεύει τους αριθμούς ως 64-bit floats, που αναπαριστούν ακριβώς ακέραιους μόνο έως 2^53. Τα μεγαλύτερα αναγνωριστικά στρογγυλοποιούνται κατά την ανάλυση· μεταδώστε τα ως συμβολοσειρές για να κρατήσετε κάθε ψηφίο.
Μπορώ να μορφοποιήσω ένα αρχείο JSON αντί να το επικολλήσω;
Ανοίξτε το αρχείο σε οποιονδήποτε επεξεργαστή κειμένου, επιλέξτε όλα και επικολλήστε το εδώ. Πολύ μεγάλα αρχεία δεκάδων megabyte μπορεί να κάνουν την καρτέλα αργή όσο το πεδίο κειμένου τα εμφανίζει.