Μετατροπή YAML σε JSON
Επικολλήστε YAML (Kubernetes manifests, Docker Compose, ρυθμίσεις CI) και πάρτε αμέσως καθαρό JSON. Τα σφάλματα δείχνουν την ακριβή γραμμή με δείκτη.
Τρέχει στον browser σαςΧωρίς εγγραφήΤίποτα δεν ανεβαίνει
Πώς να χρησιμοποιήσετε: YAML σε JSON
- Επικολλήστε YAML στο αριστερό πλαίσιο ή ανοίξτε ένα αρχείο
.yaml/.yml. - Το JSON εμφανίζεται δεξιά καθώς πληκτρολογείτε. Επιλέξτε 2 κενά, 4 κενά ή tabs για την έξοδο.
- Τσεκάρετε Ταξινόμηση κλειδιών για αλφαβητική σειρά κλειδιών. Βοηθά στη σύγκριση ρυθμίσεων.
- Αν το YAML δεν είναι έγκυρο, η γραμμή κατάστασης δείχνει γραμμή και στήλη, και οι προβληματικές γραμμές εμφανίζονται από κάτω με δείκτη
^. - Αντιγράψτε ή κατεβάστε το JSON ή πατήστε Εναλλαγή για να το μετατρέψετε ξανά σε YAML.
Πώς αντιστοιχεί το YAML σε JSON
Το JSON είναι υποσύνολο του YAML 1.2, οπότε κάθε mapping του YAML γίνεται αντικείμενο JSON, κάθε sequence γίνεται πίνακας και τα scalars γίνονται strings, αριθμοί, booleans ή null. Τα χαρακτηριστικά που υπάρχουν μόνο στο YAML επιλύονται κατά τη μετατροπή:
- Τα σχόλια (
# …) αφαιρούνται, επειδή το JSON δεν έχει σχόλια. - Anchors και aliases (
&base,*base,<<: *base) αναπτύσσονται σε πλήρη αντίγραφα. - Timestamps όπως
2024-01-02γίνονται strings ISO 8601. - Strings πολλών γραμμών (μπλοκ
|literal και>folded) γίνονται κανονικά strings με escapes\n.
YAML πολλών εγγράφων
Ένα αρχείο μπορεί να περιέχει πολλά έγγραφα YAML χωρισμένα με ---, όπως συνηθίζεται στα Kubernetes manifests. Το JSON δεν έχει αντίστοιχο, οπότε ο μετατροπέας επιστρέφει έναν πίνακα JSON με ένα στοιχείο ανά έγγραφο και το αναφέρει στη γραμμή κατάστασης. Ένα μοναχικό --- στο τέλος αγνοείται.
Παγίδες 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 που παράγει να διαβάζεται το ίδιο και στις δύο εκδόσεις.
Συχνές ερωτήσεις
Ανεβαίνει κάπου το YAML μου;
Γιατί το YAML μου αποτυγχάνει με «bad indentation»;
-) έχουν σταθερή εσοχή κάτω από το γονικό κλειδί τους.Τι γίνεται με τα σχόλια του YAML;
Γιατί το <code>no</code> έμεινε string;
true/false. Οι παλαιότεροι parsers YAML 1.1 θα μετέτρεπαν τα no, yes, on και off σε booleans (το «πρόβλημα της Νορβηγίας»).Μπορώ να μετατρέψω ένα Kubernetes manifest με πολλούς πόρους;
--- γίνεται ένα στοιχείο του πίνακα JSON εξόδου, έτοιμο για jq ή kubectl apply -f -, που δέχεται επίσης λίστες JSON.