Utilia

Μετατροπέας JSON σε XML

Μετατρέψτε JSON σε XML και XML σε JSON στο πρόγραμμα περιήγησής σας, με χειρισμό χαρακτηριστικών, επαναλαμβανόμενων στοιχείων και CDATA.

Μετατροπή

Πώς να χρησιμοποιήσετε τον μετατροπέα JSON σε XML

  1. Επιλέξτε την κατεύθυνση: JSON → XML ή XML → JSON.
  2. Επικολλήστε τα δεδομένα σας ή πατήστε Άνοιγμα αρχείου για να φορτώσετε ένα αρχείο .json ή .xml (έως 10 MB).
  3. Ορίστε τις επιλογές: Εσοχή (2 κενά, 4 κενά, Tab ή Καμία (συμπαγές)) και για τις δύο κατευθύνσεις· Ριζικό στοιχείο και Προσθήκη δήλωσης XML για JSON → XML· Μετατροπή αριθμών και λογικών τιμών για XML → JSON.
  4. Πατήστε Μετατροπή. Το αποτέλεσμα ενημερώνεται και καθώς πληκτρολογείτε, και τα σφάλματα δείχνουν τη γραμμή και τη στήλη όπου βρέθηκε το πρόβλημα.
  5. Αντιγράψτε ή κατεβάστε το αποτέλεσμα. Το Αντιστροφή κατεύθυνσης βάζει την έξοδο πίσω στην είσοδο ώστε να ελέγξετε την αμφίδρομη μετατροπή.

Πώς αντιστοιχίζεται το JSON σε XML

Το XML και το JSON δεν έχουν το ίδιο μοντέλο δεδομένων, οπότε κάθε μετατροπέας ακολουθεί μια σύμβαση. Το εργαλείο χρησιμοποιεί την ευρέως διαδεδομένη σύμβαση της βιβλιοθήκης fast-xml-parser:

JSON XML
{"title": "Dune"} <title>Dune</title>
{"book": {"@id": "42"}} <book id="42"/>
{"p": {"@lang": "en", "#text": "Hi"}} <p lang="en">Hi</p>
{"tag": ["a", "b"]} <tag>a</tag><tag>b</tag>
  • Τα κλειδιά που ξεκινούν με @ γίνονται χαρακτηριστικά και το κλειδί #text κρατά το κείμενο ενός στοιχείου που έχει και χαρακτηριστικά.
  • Ένας πίνακας γίνεται επαναλαμβανόμενο στοιχείο με το ίδιο όνομα.
  • Ένα έγγραφο XML χρειάζεται ακριβώς ένα ριζικό στοιχείο. Αν το JSON σας είναι αντικείμενο με ένα μόνο κλειδί του οποίου η τιμή είναι αντικείμενο, αυτό το κλειδί γίνεται η ρίζα. Διαφορετικά, ολόκληρη η τιμή τυλίγεται στο στοιχείο που ορίζεται στο Ριζικό στοιχείο (root από προεπιλογή) και τα στοιχεία πίνακα ανώτατου επιπέδου γίνονται στοιχεία <item>.
  • Τα κλειδιά που δεν είναι έγκυρα ονόματα XML διορθώνονται: τα κενά και τα σύμβολα γίνονται _ και ένα όνομα που ξεκινά με ψηφίο παίρνει μπροστά _ (το "1st place" → <_1st_place>).
  • Το null και οι κενές συμβολοσειρές δίνουν κενό στοιχείο όπως το <note/>. Οι ειδικοί χαρακτήρες (&, <, >, εισαγωγικά) μετατρέπονται με escape.

Πώς αντιστοιχίζεται το XML σε JSON

  • Τα χαρακτηριστικά γίνονται κλειδιά με πρόθεμα @ και το μεικτό κείμενο γίνεται #text.
  • Τα επαναλαμβανόμενα στοιχεία γίνονται πίνακας· ένα στοιχείο που εμφανίζεται μία φορά γίνεται μία μόνο τιμή.
  • Τα τμήματα CDATA συγχωνεύονται στο κείμενο και οι οντότητες όπως το &amp; αποκωδικοποιούνται. Η δήλωση XML, οι οδηγίες επεξεργασίας και τα σχόλια απορρίπτονται.
  • Με το Μετατροπή αριθμών και λογικών τιμών, το <price>12.5</price> γίνεται 12.5 και το true γίνεται λογική τιμή, ενώ τιμές με μηδενικό στην αρχή, όπως το 007, μένουν συμβολοσειρές. Απενεργοποιήστε την επιλογή για να μένει κάθε τιμή κείμενο.

Πριν από τη μετατροπή, το XML ελέγχεται ως προς τον σωστό σχηματισμό: μια ετικέτα κλεισίματος που λείπει, μια ετικέτα που δεν ταιριάζει ή ένα & χωρίς escape αναφέρονται με τη γραμμή και τη στήλη τους. Όλα εκτελούνται τοπικά στο πρόγραμμα περιήγησής σας.

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

Στέλνονται τα δεδομένα μου σε διακομιστή;

Όχι. Η μετατροπή εκτελείται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας. Οι ροές XML, τα μηνύματα SOAP και τα αρχεία ρυθμίσεων μένουν στον υπολογιστή σας.

Γιατί ένα στοιχείο γίνεται πίνακας σε ένα αρχείο και αντικείμενο σε άλλο;

Το XML δεν λέει αν ένα στοιχείο είναι λίστα. Όταν το <tag> εμφανίζεται δύο φορές, γίνεται πίνακας· όταν εμφανίζεται μία φορά, είναι μία μόνο τιμή. Αν ο κώδικάς σας περιμένει πίνακα, χειριστείτε και τις δύο περιπτώσεις ή προσθέστε ένα δεύτερο στοιχείο κατά τη δοκιμή.

Γιατί η αμφίδρομη μετατροπή δεν είναι πάντα πανομοιότυπη;

Ορισμένες πληροφορίες δεν έχουν ισοδύναμο στην άλλη πλευρά: τα σχόλια, η σειρά του μεικτού περιεχομένου ή η διαφορά ανάμεσα σε πίνακα ενός στοιχείου και σε μία μόνο τιμή. Για τυπικά έγγραφα δεδομένων, η μετατροπή JSON → XML → JSON δίνει πίσω την ίδια δομή.

Μπορώ να χρησιμοποιήσω χώρους ονομάτων (namespaces);

Ναι. Τα ονόματα με πρόθεμα όπως το soap:Envelope και τα χαρακτηριστικά όπως το @xmlns:soap διατηρούνται ως έχουν και προς τις δύο κατευθύνσεις.

Επικυρώνει με βάση ένα schema XSD;

Όχι. Ελέγχει ότι το XML είναι σωστά σχηματισμένο, αλλά δεν το επικυρώνει με DTD ή schema XSD.