Μετατροπή JSON σε YAML
Μετατρέψτε JSON σε καθαρό, ευανάγνωστο YAML για Kubernetes, Docker Compose, GitHub Actions ή Ansible, με πλήρη έλεγχο σε εσοχές, στυλ και εισαγωγικά.
Τρέχει στον browser σαςΧωρίς εγγραφήΤίποτα δεν ανεβαίνει
Πώς να χρησιμοποιήσετε: JSON σε YAML
- Επικολλήστε JSON στο αριστερό πλαίσιο ή ανοίξτε ένα αρχείο
.json. - Το YAML εμφανίζεται δεξιά καθώς πληκτρολογείτε.
- Επιλέξτε εσοχή (2 ή 4 κενά) και στυλ: block (ένα κλειδί ανά γραμμή) ή flow (
{a: 1}/[x, y]) από ένα συγκεκριμένο επίπεδο ένθεσης. - Διαλέξτε στυλ εισαγωγικών και τσεκάρετε Ταξινόμηση κλειδιών αν θέλετε αλφαβητική σειρά.
- Αντιγράψτε ή κατεβάστε το YAML. Το μη έγκυρο JSON αναφέρεται με γραμμή, στήλη και πιθανή αιτία.
Γιατί να μετατρέψετε JSON σε YAML;
Το JSON είναι ιδανικό για μηχανές και APIs, αλλά το YAML διαβάζεται και επεξεργάζεται πιο εύκολα από ανθρώπους: χωρίς άγκιστρα, χωρίς υποχρεωτικά εισαγωγικά και με υποστήριξη σχολίων. Τα περισσότερα εργαλεία υποδομής, όπως Kubernetes, Helm, Docker Compose, GitHub Actions, GitLab CI και Ansible, ρυθμίζονται σε YAML, ενώ τα δεδομένα από τα οποία ξεκινάτε (έξοδος API, kubectl get -o json, Terraform state) είναι συχνά JSON.
Στυλ block ή flow
Το στυλ block βάζει κάθε κλειδί και στοιχείο λίστας στη δική του γραμμή και είναι η καθιερωμένη επιλογή για αρχεία ρυθμίσεων. Το στυλ flow χρησιμοποιεί inline {} και [], όπως το JSON, και κρατά συμπαγείς τις μικρές τελικές δομές. Το «Flow από επίπεδο 2» κρατά τα δύο πρώτα επίπεδα σε στυλ block και γράφει inline οτιδήποτε βαθύτερο, κάτι που ταιριάζει σε μεγάλες λίστες μικρών αντικειμένων όπως θύρες ή μεταβλητές περιβάλλοντος.
Ασφαλή εισαγωγικά
Strings που ένας YAML parser θα μπορούσε να παρερμηνεύσει μπαίνουν αυτόματα σε εισαγωγικά: τιμές όπως 'no', 'on', '1.0', 'null', strings που ξεκινούν με * ή & και strings που περιέχουν : . Επιλέξτε Πάντα μονά ή Πάντα διπλά αν ο οδηγός στυλ σας απαιτεί εισαγωγικά σε κάθε string.
Παγίδες YAML 1.1 και 1.2
Ο μετατροπέας ακολουθεί το YAML 1.2, την τρέχουσα προδιαγραφή. Πολλά παλαιότερα εργαλεία (PyYAML, το Psych της Ruby, ορισμένες εκδόσεις Kubernetes και Ansible) διαβάζουν ακόμη YAML 1.1, όπου οι κανόνες διαφέρουν:
- Το πρόβλημα της Νορβηγίας: στο YAML 1.1, το
country: noσημαίνειfalse, οπότε ο κωδικός χώρας της ΝορβηγίαςNOεξαφανίζεται. Το ίδιο ισχύει για ταyes,on,off,yκαιn. Το YAML 1.2 θεωρεί booleans μόνο ταtrueκαιfalse. - Οκταδικοί αριθμοί: το
0755είναι οκταδικό στο 1.1 αλλά απλός δεκαδικός στο 1.2, που χρησιμοποιεί0o755. Βάλτε τα δικαιώματα αρχείων σε εισαγωγικά για σιγουριά. - Εξηκονταδικοί αριθμοί: στο 1.1, το
22:30μπορεί να αναλυθεί ως ο αριθμός 1350. Βάλτε σε εισαγωγικά ώρες και αντιστοιχίσεις θυρών όπως"8080:80".
Η κατεύθυνση JSON → YAML βάζει αυτόματα σε εισαγωγικά τα αμφίσημα strings ('no', 'on', 'y'), ώστε το YAML που παράγει να διαβάζεται το ίδιο και στις δύο εκδόσεις.
Συχνές ερωτήσεις
Είναι η μετατροπή χωρίς απώλειες;
Γιατί κάποια strings έχουν εισαγωγικά και άλλα όχι;
'yes', '123' ή strings με ειδικούς χαρακτήρες. Όλα τα υπόλοιπα μένουν απλά για καλύτερη αναγνωσιμότητα.Μπορώ να προσθέσω σχόλια στην έξοδο;
# comments στο YAML αφού το αντιγράψετε.