tigtools

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

Αλλάξτε κατεύθυνση, επικολλήστε τα δεδομένα σας και λάβετε αμέσως το μετατρεπόμενο αποτέλεσμα. Χρήσιμο για manifests Kubernetes, pipelines CI και ρυθμίσεις εφαρμογών.

Εκτελείται στον περιηγητή σας Χωρίς εγγραφή

Κατεύθυνση
Εσοχή

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

  1. Επιλέξτε την κατεύθυνση: JSON → YAML ή YAML → JSON.
  2. Επικολλήστε τα δεδομένα σας ή πατήστε «Δοκιμή παραδείγματος». Το αποτέλεσμα ενημερώνεται καθώς πληκτρολογείτε.
  3. Επιλέξτε εσοχή 2 ή 4 κενών για την έξοδο.
  4. Αντιγράψτε ή κατεβάστε το αποτέλεσμα. Η επιλογή «Χρήση εξόδου ως εισόδου» αντιστρέφει την κατεύθυνση ώστε να μπορείτε να μετατρέψετε αντίστροφα.

Πώς λειτουργεί

Η μετατροπή χρησιμοποιεί τη βιβλιοθήκη ανοιχτού κώδικα YAML (έκδοση 2), η οποία υλοποιεί την προδιαγραφή YAML 1.2. Το YAML 1.2 είναι, για πρακτικούς σκοπούς, υπερσύνολο του JSON, οπότε κάθε έγγραφο JSON μετατρέπεται σε YAML χωρίς απώλειες, και YAML που χρησιμοποιεί μόνο αντιστοιχίσεις, λίστες, συμβολοσειρές, αριθμούς, τιμές boolean και null μετατρέπεται πίσω σε πανομοιότυπο JSON.

Κατά τη σύνταξη YAML, το εργαλείο βάζει σε εισαγωγικά συμβολοσειρές που ένας αναγνώστης θα μπορούσε να εκλάβει ως κάτι άλλο. Παλαιότεροι αναλυτές YAML 1.1, όπως το PyYAML και πολλά εργαλεία CI, διαβάζουν τα yes, no, on και off ως boolean, το 0777 ως οκταδικό αριθμό και το 2024-01-31 ως ημερομηνία, επομένως αυτά γράφονται ως "yes", "0777" και "2024-01-31". Οι μεγάλες συμβολοσειρές δεν αναδιπλώνονται σε πολλές γραμμές. Τα σχόλια δεν μπορούν να μεταφερθούν, επειδή το JSON δεν έχει σχόλια.

Κατά την ανάγνωση YAML, οι άγκυρες (&name) και τα ψευδώνυμα (*name) επεκτείνονται, συμπεριλαμβανομένου του κλειδιού συγχώνευσης <<, και ένα αρχείο με πολλά έγγραφα που χωρίζονται με --- γίνεται πίνακας JSON. Για την προστασία του προγράμματος περιήγησής σας, η επέκταση ψευδωνύμων είναι περιορισμένη, κάτι που σταματά έγγραφα τύπου «billion laughs». Οι τιμές YAML χωρίς ισοδύναμο JSON μετατρέπονται όσο το δυνατόν πιστότερα: τα .inf και .nan γίνονται null και οι χρονοσφραγίδες παραμένουν συμβολοσειρές. Τα συντακτικά σφάλματα αναφέρονται με τη γραμμή και τη στήλη τους.

Παραδείγματα

Manifest Kubernetes

Ένα Deployment γραμμένο ως JSON από ένα script μετατρέπεται στη διάταξη YAML που περιμένουν οι χρήστες του kubectl, με λίστες κάτω από τα containers γραμμένες ως - name: web. Τιμές όπως το "no" παραμένουν σε εισαγωγικά ώστε να παραμείνουν συμβολοσειρές.

Ρυθμίσεις CI με άγκυρες

Ένα αρχείο pipeline ορίζει προεπιλογές: &defaults και τις επαναχρησιμοποιεί με <<: *defaults. Η μετατροπή σε JSON δείχνει ακριβώς ποια κλειδιά καταλήγει να έχει κάθε job μετά τη συγχώνευση.

Προδιαγραφή OpenAPI

Ένα αρχείο OpenAPI συντηρείται σε YAML, αλλά μια γεννήτρια κώδικα χρειάζεται JSON. Επικολλήστε το YAML, επιλέξτε εσοχή 2 διαστημάτων και κατεβάστε το αρχείο .json.

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

Γιατί το "yes" γράφεται σε εισαγωγικά στο YAML μου;

Σύμφωνα με τους κανόνες YAML 1.1, που εξακολουθούν να χρησιμοποιούν το PyYAML, το Ansible και πολλά άλλα εργαλεία, ένα yes, no, on ή off χωρίς εισαγωγικά είναι boolean. Τα εισαγωγικά το διατηρούν ως συμβολοσειρά σε κάθε αναλυτή. Τα εισαγωγικά δεν αποτελούν μέρος της τιμής.

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

Όχι. Το JSON δεν έχει σύνταξη σχολίων, επομένως τα σχόλια απορρίπτονται. Η μετατροπή του JSON πίσω σε YAML δεν θα τα επαναφέρει.

Τι συμβαίνει με πολλά έγγραφα YAML που χωρίζονται με ---;

Μετατρέπονται σε έναν πίνακα JSON με ένα στοιχείο ανά έγγραφο, με τη σειρά. Ένα μόνο έγγραφο μετατρέπεται απευθείας στην τιμή του.

Τι γίνεται με προσαρμοσμένες ετικέτες όπως το !Ref του CloudFormation;

Οι ετικέτες ειδικές για εφαρμογές δεν αναγνωρίζονται. Το εργαλείο εμφανίζει προειδοποίηση και μετατρέπει την τιμή με ετικέτα ως απλή τιμή, οπότε το !Ref MyBucket γίνεται η συμβολοσειρά "MyBucket" και η ίδια η ετικέτα χάνεται.

Απόρρητο

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