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

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

Μορφή Πώς αναπαριστά τα δεδομένα Πού τη συναντάτε
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: ξεκινούν με τις μορφές που αναφέρονται στο όνομά τους, ενώ τα μενού Πηγή και Στόχος επιτρέπουν την επιλογή οποιασδήποτε άλλης. Επικολλήστε ή πληκτρολογήστε τα δεδομένα σας και το αποτέλεσμα εμφανίζεται καθώς πληκτρολογείτε, σε ένα πρόγραμμα επεξεργασίας κώδικα με επισήμανση σύνταξης, έτοιμο για αντιγραφή. Το κουμπί εναλλαγής αντιστρέφει τη μετατροπή και ορίζει το αποτέλεσμα ως νέα είσοδο.

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

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

Παράδειγμα

Αυτό το 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. Πολλά διαδοχικά μηνύματα γίνονται λίστα.
  • Στα αποτελέσματα JSONL, κάθε στοιχείο της λίστας βρίσκεται στη δική του γραμμή.
  • Οι ακέραιοι αριθμοί που είναι υπερβολικά μεγάλοι για τους αριθμούς JavaScript, όπως τα αναγνωριστικά 64 bit, διατηρούν όλα τα ψηφία τους.
  • Οι ημερομηνίες και ώρες TOML, καθώς και οι χρονικές σημάνσεις MessagePack, γίνονται κείμενο, όπως το 1979-05-27T07:32:00Z.

Συμβουλές

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