CodeKitHub
Εργαλεία JSON

Μετατροπέας JSON ↔ YAML

Τελευταία ενημέρωση:

Για να μετατρέψετε JSON σε YAML, τα αντικείμενα γίνονται μπλοκ key: value με εσοχή και οι πίνακες γίνονται στοιχεία λίστας με πρόθεμα `-` — η αντίστροφη μετατροπή αναλύει συντομεύσεις τύπου YAML όπως χωρίς εισαγωγικά true, null ή αριθμούς πίσω στους σωστούς τύπους JSON. Αυτό το εργαλείο κάνει αυτή τη μετατροπή, και προς τις δύο κατευθύνσεις, εξ ολοκλήρου στον browser σας.

Τι είναι αυτό το εργαλείο;

Το YAML είναι η προτιμώμενη μορφή για τα περισσότερα σύγχρονα αρχεία διαμόρφωσης — manifests Kubernetes, Docker Compose, pipelines GitHub Actions και GitLab CI, playbooks Ansible — επειδή είναι πιο ευανάγνωστο από το JSON για ανθρώπους που επεξεργάζονται αρχεία με το χέρι: δεν απαιτούνται εισαγωγικά γύρω από τα περισσότερα κλειδιά, δεν υπάρχουν κόμματα στο τέλος που να μπερδεύουν, και υποστηρίζονται σχόλια. Το JSON, από την άλλη, είναι αυτό που παράγουν και καταναλώνουν εγγενώς τα περισσότερα APIs και γλώσσες προγραμματισμού.

Αυτό το εργαλείο γεφυρώνει τα δύο χρησιμοποιώντας το js-yaml, μια ευρέως χρησιμοποιούμενη υλοποίηση JavaScript της προδιαγραφής YAML, ώστε η ανάλυση και η παραγωγή να ακολουθούν τους ίδιους κανόνες που θα εφάρμοζε ένα εργαλείο με επίγνωση YAML όπως το `kubectl` ή ένας CI runner.

Η μετατροπή JSON σε YAML μετατρέπει τα αντικείμενα σε μπλοκ key: value με εσοχή και τους πίνακες σε στοιχεία λίστας με πρόθεμα `-`. Η μετατροπή YAML σε JSON κάνει το αντίστροφο, και επίσης αναλύει συντομεύσεις τύπου ειδικές για το YAML (όπως χωρίς εισαγωγικά `true`, `null`, ή αριθμούς) στους σωστούς τύπους JSON.

Γιατί να το χρησιμοποιήσετε;

  • Αμφίδρομο — μετατρέψτε JSON σε YAML ή YAML σε JSON από την ίδια οθόνη.
  • Ανάλυση και παραγωγή βασισμένη σε πρότυπα μέσω js-yaml, ώστε το αποτέλεσμα να ταιριάζει με αυτό που περιμένουν πραγματικά εργαλεία YAML (Kubernetes, συστήματα CI, Ansible).
  • Χειρίζεται ένθετα αντικείμενα και πίνακες σε οποιοδήποτε βάθος, μετατρέποντας μεταξύ της δομής βασισμένης σε εσοχές του YAML και των αγκυλών/άγκιστρων του JSON.
  • Ερμηνεύει σωστά τις συντομεύσεις τύπου YAML — τα χωρίς εισαγωγικά true/false, null, και αριθμητικές τιμές γίνονται οι σωστοί τύποι JSON αντί για strings.
  • Αντιγραφή στο πρόχειρο ή λήψη ως αρχείο .json ή .yaml.
  • 100% από την πλευρά του client — τίποτα από όσα επικολλάτε δεν ανεβαίνει πουθενά.

Πώς χρησιμοποιείται

  1. Επιλέξτε μια κατεύθυνση: "JSON → YAML" ή "YAML → JSON".
  2. Επικολλήστε τα δεδομένα σας στο πλαίσιο εισαγωγής.
  3. Κάντε κλικ στο "Convert".
  4. Ελέγξτε το αποτέλεσμα, μετά αντιγράψτε το ή κάντε κλικ στο "Download" για να αποθηκεύσετε ένα αρχείο.

Παράδειγμα

Είσοδος

{"name":"Alice","roles":["admin","editor"],"active":true}

Έξοδος

name: Alice
roles:
  - admin
  - editor
active: true

Παρατηρήστε πώς ο πίνακας γίνεται λίστα στοιχείων με παύλα κάτω από το "roles", και το boolean παραμένει χωρίς εισαγωγικά true αντί να γίνει το string "true".

Πρακτικές συμβουλές

  • Γράφοντας ένα manifest Kubernetes ή ένα workflow GitHub Actions: σχεδιάστε πρώτα τη δομή ως JSON (πολλοί editors και εργαλεία AI παράγουν JSON πιο αξιόπιστα), μετά μετατρέψτε σε YAML για το τελικό αρχείο.
  • Εντοπισμός προβλήματος σε μια διαμόρφωση YAML που δεν συμπεριφέρεται σωστά: μετατρέψτε την σε JSON για να δείτε ακριβώς ποιες τιμές είναι strings, αριθμοί, ή booleans — η ευέλικτη σύνταξη του YAML μπορεί να κρύψει αναντιστοιχίες τύπων που είναι προφανείς στο JSON.
  • Αν το JSON σας περιέχει κλειδιά με ειδικούς χαρακτήρες ή που ξεκινούν με αριθμό, το js-yaml θα τα βάλει αυτόματα σε εισαγωγικά στο αποτέλεσμα YAML ώστε να αναλύονται σωστά πίσω.

Γιατί ο εξαναγκασμός τύπου είναι το πιο δύσκολο κομμάτι του YAML

Το μεγαλύτερο πλεονέκτημα ευχρηστίας του YAML έναντι του JSON — η μη απαίτηση εισαγωγικών γύρω από τις περισσότερες τιμές — είναι επίσης η μεγαλύτερη πηγή του για λεπτά σφάλματα. Το κλασικό παράδειγμα είναι το "πρόβλημα της Νορβηγίας": στο YAML 1.1 (που χρησιμοποιείται από πολλούς παλαιότερους analyzers), μια τιμή χωρίς εισαγωγικά `no` ερμηνεύεται ως το boolean `false`, όχι το string "no", κάτι που έχει καταστρέψει πραγματικές διαμορφώσεις κωδικών χωρών που παραθέτουν τη Νορβηγία. Αυτό το εργαλείο ακολουθεί την προδιαγραφή YAML 1.2, η οποία περιόρισε το σύνολο των τιμών χωρίς εισαγωγικά που αντιμετωπίζονται ως booleans μόνο σε `true` και `false` (και τις παραλλαγές τους), μειώνοντας — αν και όχι εξαλείφοντας — αυτή την κατηγορία εκπλήξεων. Όταν έχετε αμφιβολία για το πώς θα τυποποιηθεί μια τιμή, το να τη βάλετε ρητά σε εισαγωγικά στο YAML σας είναι η ασφαλέστερη επιλογή.

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

Διατηρούνται τα σχόλια YAML όταν μετατρέπω σε JSON και πίσω;

Όχι. Το JSON δεν έχει έννοια σχολίων, οπότε η μετατροπή YAML σε JSON απορρίπτει οποιαδήποτε σχόλια # στην πηγή. Αν μετατρέψετε αυτό το JSON πίσω σε YAML, τα σχόλια δεν θα επανεμφανιστούν — αυτός είναι εγγενής περιορισμός της μορφής, όχι σφάλμα του εργαλείου.

Πώς χειρίζεται το εργαλείο τα anchors και aliases του YAML (& και *);

Ο υποκείμενος analyzer (js-yaml) επιλύει τα anchors και aliases πριν παράγει JSON, οπότε ένα αρχείο YAML που χρησιμοποιεί anchors & και aliases * για επαναχρησιμοποίηση ενός μπλοκ δεδομένων θα μετατραπεί σε JSON με αυτά τα δεδομένα επεκταμένα πλήρως σε κάθε σημείο όπου αναφέρονται.

Γιατί ο αριθμός YAML μου εμφανίστηκε ως string στο JSON, ή αντίστροφα;

Αν μια τιμή είναι σε εισαγωγικά στην πηγή YAML (π.χ. version: "3.10"), αντιμετωπίζεται σκόπιμα ως string — αυτό έχει σημασία επειδή οι αριθμοί YAML χωρίς εισαγωγικά όπως 3.10 μπορούν να χάσουν το τελικό μηδενικό όταν αναλύονται ως float. Βάλτε εισαγωγικά σε μια τιμή στην πηγή YAML αν χρειάζεστε συγκεκριμένα να αντιμετωπίζεται ως κείμενο.

Μπορώ να μετατρέψω ένα αρχείο YAML με πολλαπλά έγγραφα (χωρισμένα με ---);

Αυτό το εργαλείο μετατρέπει ένα μόνο έγγραφο YAML τη φορά. Αν το αρχείο σας έχει πολλαπλά έγγραφα χωρισμένα με δείκτες ---, μετατρέψτε ένα τμήμα τη φορά, ή αφαιρέστε τους διαχωριστές και συγχωνεύστε τα σε ένα έγγραφο πρώτα αν ταιριάζει στη χρήση σας.

Ανεβαίνουν τα δεδομένα μου πουθενά;

Όχι. Η μετατροπή γίνεται εξ ολοκλήρου στον browser σας μέσω της βιβλιοθήκης js-yaml — τίποτα δεν αποστέλλεται σε server, κάτι που το κάνει ασφαλές να χρησιμοποιείται με πραγματικά αρχεία διαμόρφωσης, ακόμα και με τέτοια που περιέχουν εσωτερικά hostnames ή λεπτομέρειες υποδομής.

Σχετικά εργαλεία