Μετατροπή YAML σε JSON

Επικολλήστε YAML (Kubernetes manifests, Docker Compose, ρυθμίσεις CI) και πάρτε αμέσως καθαρό JSON. Τα σφάλματα δείχνουν την ακριβή γραμμή με δείκτη.

Τρέχει στον browser σαςΧωρίς εγγραφήΤίποτα δεν ανεβαίνει

Έξοδος JSON

Πώς να χρησιμοποιήσετε: YAML σε JSON

  1. Επικολλήστε YAML στο αριστερό πλαίσιο ή ανοίξτε ένα αρχείο .yaml/.yml.
  2. Το JSON εμφανίζεται δεξιά καθώς πληκτρολογείτε. Επιλέξτε 2 κενά, 4 κενά ή tabs για την έξοδο.
  3. Τσεκάρετε Ταξινόμηση κλειδιών για αλφαβητική σειρά κλειδιών. Βοηθά στη σύγκριση ρυθμίσεων.
  4. Αν το YAML δεν είναι έγκυρο, η γραμμή κατάστασης δείχνει γραμμή και στήλη, και οι προβληματικές γραμμές εμφανίζονται από κάτω με δείκτη ^.
  5. Αντιγράψτε ή κατεβάστε το 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 μου;
Όχι. Η ανάλυση γίνεται στον browser σας με τη βιβλιοθήκη ανοιχτού κώδικα js-yaml. Ρυθμίσεις που περιέχουν μυστικά ή εσωτερικά hostnames δεν φεύγουν ποτέ από τον υπολογιστή σας.
Γιατί το YAML μου αποτυγχάνει με «bad indentation»;
Η ένθεση στο YAML ορίζεται με κενά και τα tabs δεν επιτρέπονται για εσοχές. Βεβαιωθείτε ότι τα αδελφά κλειδιά ευθυγραμμίζονται ακριβώς και ότι τα στοιχεία λίστας (-) έχουν σταθερή εσοχή κάτω από το γονικό κλειδί τους.
Τι γίνεται με τα σχόλια του YAML;
Αφαιρούνται. Το JSON δεν έχει σύνταξη σχολίων, οπότε τα σχόλια δεν μεταφέρονται. Η μετατροπή ξανά σε YAML δεν θα τα επαναφέρει.
Γιατί το <code>no</code> έμεινε string;
Το εργαλείο ακολουθεί το YAML 1.2, όπου booleans είναι μόνο τα true/false. Οι παλαιότεροι parsers YAML 1.1 θα μετέτρεπαν τα no, yes, on και off σε booleans (το «πρόβλημα της Νορβηγίας»).
Μπορώ να μετατρέψω ένα Kubernetes manifest με πολλούς πόρους;
Ναι. Κάθε πόρος που χωρίζεται με --- γίνεται ένα στοιχείο του πίνακα JSON εξόδου, έτοιμο για jq ή kubectl apply -f -, που δέχεται επίσης λίστες JSON.

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