Τι είναι αυτές οι μορφές δεδομένων;

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

Μορφή Πώς αναπαριστά τα δεδομένα Πού τη συναντάτε
JSON Αντικείμενα μέσα σε άγκιστρα, λίστες μέσα σε αγκύλες, κείμενο μέσα σε διπλά εισαγωγικά Web API και ρυθμίσεις εφαρμογών
YAML Γραμμές με εσοχή της μορφής key: value, στοιχεία λίστας που αρχίζουν με - Docker Compose, Kubernetes και αρχεία αγωγών CI
XML Στοιχεία μέσα σε ετικέτες, που μπορούν να έχουν γνωρίσματα Έγγραφα, ροές RSS και υπηρεσίες ιστού SOAP
TOML Γραμμές key = value κάτω από επικεφαλίδες [table] Αρχεία ρυθμίσεων όπως τα Cargo.toml και pyproject.toml
TOON Γραμμές με εσοχή, με λίστες εγγραφών σε γραμμές κάτω από τα πεδία τους Δομημένα δεδομένα που αποστέλλονται σε γλωσσικά μοντέλα AI
CSV Μια γραμμή επικεφαλίδων και έπειτα μία γραμμή ανά εγγραφή, με τις τιμές χωρισμένες με κόμματα Υπολογιστικά φύλλα και εξαγωγές βάσεων δεδομένων
TSV Όπως το CSV, αλλά με στηλοθέτες ανάμεσα στις τιμές Κελιά που αντιγράφονται από υπολογιστικό φύλλο
MessagePack Δυαδικά δεδομένα, που στην καρτέλα Κείμενο εμφανίζονται ως δεκαεξαδικά byte Συμπαγή μηνύματα μεταξύ προγραμμάτων
JSON5 JSON που επιτρέπει επίσης σχόλια, μονά εισαγωγικά και κλειδιά χωρίς εισαγωγικά Αρχεία ρυθμίσεων που γράφονται με το χέρι
JSONL Μία τιμή JSON ανά γραμμή, που αποκαλείται επίσης JSON Lines ή NDJSON Αρχεία καταγραφής και σύνολα δεδομένων
INI Γραμμές key = value κάτω από επικεφαλίδες [section] Αρχεία ρυθμίσεων προγραμμάτων, όπως το php.ini
Properties Γραμμές key = value με κλειδιά που περιέχουν τελείες Εφαρμογές Java, όπως τα αρχεία application.properties του Spring Boot

Περιγραφή εργαλείου

Αυτό το εργαλείο μετατρέπει δεδομένα μεταξύ αυτών των 12 μορφών: JSON, YAML, XML, TOML, TOON, CSV, TSV, MessagePack, JSON5, JSONL, INI και Java properties. Όλοι οι μετατροπείς μορφών δεδομένων εδώ λειτουργούν με τον ίδιο τρόπο, από τον γενικό Μετατροπέα Μορφών Δεδομένων έως εκείνους που αφορούν ένα μόνο ζεύγος, όπως JSON σε YAML, CSV σε JSON ή XML σε JSON: ξεκινούν με τις μορφές που αναφέρονται στο όνομά τους, ενώ τα μενού Πηγή και Στόχος επιτρέπουν την επιλογή οποιασδήποτε άλλης.

Οι μετατροπείς δέχονται δεδομένα ως κείμενο που επικολλάτε ή πληκτρολογείτε ή ως αρχεία, και δίνουν κείμενο ή αρχεία. Επιλέξτε τι θέλετε με τις καρτέλες Αρχείο και Κείμενο στο επάνω μέρος της πλευράς προέλευσης και της πλευράς στόχου. Και οι δύο πλευρές ξεκινούν στο Κείμενο.

  • Κείμενο ως είσοδος: επικολλήστε ή πληκτρολογήστε τα δεδομένα σας και μετατρέπονται καθώς πληκτρολογείτε.
  • Αρχείο ως είσοδος: επιλέξτε ή σύρετε και αφήστε ένα ή περισσότερα αρχεία. Το κουμπί Περιήγηση αρχείων εμφανίζει μόνο αρχεία στη μορφή προέλευσης, αλλά τα αρχεία που σύρετε μπορούν να είναι σε οποιαδήποτε από τις 12 μορφές, και το καθένα μετατρέπεται από τη μορφή που δηλώνει η επέκτασή του, οπότε ένα αρχείο .yaml μετατρέπεται ως YAML ακόμη και στον μετατροπέα JSON σε XML. Ένα αρχείο που σύρετε με άλλη επέκταση, όπως .txt, μετατρέπεται από τη μορφή προέλευσης. Διαβάζονται επίσης αρχεία σε UTF-16 ή σε παλαιότερη κωδικοποίηση, όπως Windows-1252.
  • Κείμενο ως έξοδος: το αποτέλεσμα εμφανίζεται σε ένα πρόγραμμα επεξεργασίας κώδικα με επισήμανση σύνταξης, έτοιμο για αντιγραφή. Όταν μετατρέπονται πολλά αρχεία, το μενού Αρχείο από πάνω επιλέγει ποιο αρχείο εμφανίζεται.
  • Αρχείο ως έξοδος: τα αρχεία που μετατράπηκαν εμφανίζονται σε πλέγμα, το καθένα με το δικό του κουμπί Λήψη, και κρατούν τα ονόματά τους με τη νέα επέκταση. Το κουμπί Λήψη όλων αποθηκεύει όλα τα αρχεία που μετατράπηκαν σε ένα αρχείο ZIP ή ένα μεμονωμένο αρχείο που μετατράπηκε ως έχει. Τα δεδομένα που επικολλάτε δίνουν ένα αρχείο με όνομα converted, όπως converted.yaml. Τα αρχεία που μετατράπηκαν είναι κείμενο UTF-8, εκτός από τα αρχεία MessagePack, που είναι δυαδικά.

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

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

Τα δεδομένα σας μετατρέπονται στο πρόγραμμα περιήγησής σας και δεν μεταφορτώνονται ποτέ.

Παράδειγμα

Αυτό το JSON:

{
  "users": [
    { "id": 1, "name": "Ann", "admin": true },
    { "id": 2, "name": "Bo", "admin": false }
  ]
}

γίνεται αυτό το YAML:

users:
  - id: 1
    name: Ann
    admin: true
  - id: 2
    name: Bo
    admin: false

αυτό το CSV, με μία γραμμή ανά χρήστη:

id,name,admin
1,Ann,true
2,Bo,false

και αυτό το TOON:

users[2]{id,name,admin}:
  1,Ann,true
  2,Bo,false

Πώς αντιστοιχίζονται οι μορφές μεταξύ τους

Δεν υποστηρίζουν όλες οι μορφές τα ίδια είδη δεδομένων, επομένως ορισμένες μετατροπές ακολουθούν τους εξής κανόνες:

  • CSV και TSV αποθηκεύουν έναν πίνακα. Η πρώτη γραμμή ορίζει τις στήλες και κάθε επόμενη γραμμή γίνεται αντικείμενο. Τα ένθετα αντικείμενα γίνονται στήλες με ονόματα που προκύπτουν από τη διαδρομή τους, ενώ οι λίστες γίνονται κείμενο JSON στο αντίστοιχο κελί. Έτσι, το {"name": "Ann", "address": {"city": "Oslo"}, "tags": ["a", "b"]} γίνεται οι στήλες name, address.city και tags. Κατά την αντίστροφη μετατροπή, αυτές οι στήλες γίνονται ξανά ένθετα αντικείμενα και λίστες. Όταν τα δεδομένα είναι ένα αντικείμενο που περιέχει μία λίστα, όπως το {"users": [...]}, οι γραμμές αντιστοιχούν στα στοιχεία αυτής της λίστας, ενώ μια λίστα λιστών γίνεται γραμμές χωρίς επικεφαλίδα.
  • Τιμές κειμένου: Τα CSV, TSV, XML, INI και properties αποθηκεύουν μόνο κείμενο, οπότε οι μετατροπείς μετατρέπουν τα true και false σε τιμές αληθείας και τους αριθμούς που γράφονται απλά, όπως 42 ή 3.5, σε αριθμούς. Τιμές όπως 007, 1.50 ή 1e3 παραμένουν κείμενο, ώστε οι ταχυδρομικοί κώδικες και οι αριθμοί εκδόσεων να διατηρούν ακριβώς την αρχική μορφή τους.
  • Τα γνωρίσματα XML γίνονται κλειδιά που αρχίζουν με @, ενώ το κείμενο ενός στοιχείου που έχει γνωρίσματα γίνεται #text: το <price currency="USD">44.95</price> γίνεται {"@currency": "USD", "#text": 44.95}. Τα επαναλαμβανόμενα στοιχεία γίνονται λίστα. Κατά τη μετατροπή σε XML, τα κλειδιά που αρχίζουν με @ γίνονται ξανά γνωρίσματα. Ένα αντικείμενο με ένα μόνο κλειδί, του οποίου η τιμή δεν είναι λίστα, γίνεται το στοιχείο ρίζας. Τα υπόλοιπα δεδομένα τοποθετούνται μέσα σε ένα στοιχείο <root>, με κάθε στοιχείο μιας λίστας στην κορυφή να τοποθετείται μέσα σε στοιχείο <item>. Οι χαρακτήρες που δεν επιτρέπονται στα ονόματα XML, όπως τα κενά, αντικαθίστανται με _.
  • Τα TOML, INI και properties μπορούν να αποθηκεύσουν μόνο επώνυμες τιμές στο ανώτατο επίπεδο, επομένως τα δεδομένα που είναι λίστα γράφονται κάτω από το όνομα items και μια μεμονωμένη τιμή κάτω από το value. Το TOML δεν έχει τιμή null, επομένως οι τιμές null παραλείπονται.
  • Το INI αναπαριστά τα ένθετα αντικείμενα ως ενότητες, όπως η [server.ssl], τις λίστες τιμών ως γραμμές key[] = value και τις λίστες αντικειμένων ως ενότητες με όνομα που βασίζεται στη θέση τους, όπως η [users.0].
  • Τα κλειδιά properties συνενώνουν τα ένθετα ονόματα με τελείες και αριθμούν τα στοιχεία λίστας μέσα σε αγκύλες, όπως το app.hosts[0], με τον τρόπο που τα γράφει το Spring Boot. Κατά τη μετατροπή σε YAML ή JSON, αυτά τα κλειδιά γίνονται ένθετα αντικείμενα και λίστες, οπότε ένα αρχείο application.properties μετατρέπεται στη διάταξη ενός αρχείου application.yml. Οι χαρακτήρες εκτός του Latin-1 γράφονται ως ακολουθίες διαφυγής \u.
  • Τα αποτελέσματα YAML περικλείουν σε εισαγωγικά το κείμενο που οι αναγνώστες YAML 1.1 θα ερμήνευαν ως κάτι άλλο, όπως τα on, yes ή μια ημερομηνία, ώστε οι αναγνώστες YAML 1.1 και YAML 1.2 να λαμβάνουν τα ίδια δεδομένα. Ένα αρχείο YAML με πολλά έγγραφα που χωρίζονται με --- γίνεται λίστα αυτών των εγγράφων και τα κλειδιά συγχώνευσης << συμπληρώνονται.
  • Το MessagePack είναι δυαδική μορφή. Ως κείμενο, τα εργαλεία το διαβάζουν και το γράφουν ως δεκαεξαδικά byte: το {"a": 1} είναι 81 A1 61 01 και η είσοδος μπορεί να περιέχει κενά, κόμματα και 0x πριν από κάθε byte. Τα αρχεία MessagePack που επιλέγετε ή αποθηκεύετε στην καρτέλα Αρχείο περιέχουν τα ίδια τα byte, οπότε ένα αρχείο .msgpack που μετατράπηκε είναι δυαδικό. Πολλά διαδοχικά μηνύματα γίνονται λίστα.
  • Στα αποτελέσματα JSONL, κάθε στοιχείο της λίστας βρίσκεται στη δική του γραμμή.
  • Οι ακέραιοι αριθμοί που είναι υπερβολικά μεγάλοι για τους αριθμούς JavaScript, όπως τα αναγνωριστικά 64 bit, διατηρούν όλα τα ψηφία τους.
  • Οι ημερομηνίες και ώρες TOML, καθώς και οι χρονικές σημάνσεις MessagePack, γίνονται κείμενο, όπως το 1979-05-27T07:32:00Z.

Συμβουλές

  • Για να μετατρέψετε κελιά από υπολογιστικό φύλλο, αντιγράψτε τα και επικολλήστε τα ως TSV: οι εφαρμογές υπολογιστικών φύλλων αντιγράφουν τα κελιά ως κείμενο με διαχωρισμό στηλοθετών.
  • Τα CSV και TSV είναι κατάλληλα για δεδομένα που αποτελούνται από λίστα παρόμοιων εγγραφών. Τα δεδομένα με βαθιά ένθεση διαβάζονται ευκολότερα ως YAML, TOML ή TOON.
  • Τα σχόλια σε αρχεία YAML, XML, TOML, JSON5, INI και properties δεν διατηρούνται, καθώς οι μετατροπείς μεταφέρουν μόνο τα δεδομένα.