UltKit
Εικόνα11
PDF13
Έγγραφα και δεδομένα7
Βίντεο6
Ήχος4
Περισσότερα εργαλεία22

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

Μετατρέψτε το JSON σε YAML που διαβάζεται, ελέγχεται και σχολιάζεται εύκολα. Ανεβάστε αρχεία .json και λάβετε .yaml με σωστή εσοχή, τα ίδια κλειδιά, τιμές και σειρά, έτοιμο να μπει σε ένα αποθετήριο.

Μετατροπέας δεδομένων

ή σύρετε Αρχεία CSV, TSV, TXT … εδώ ·

Έως 95 MB ανά αρχείο· Έως 20 αρχεία· Διαγραφή μετά από 30 λεπτά

Έξοδος

Τα αρχεία επεξεργάζονται στους διακομιστές μας και διαγράφονται μετά από 30 λεπτά.

Πώς να χρησιμοποιήσετε αυτό το εργαλείο

  1. 1

    Προσθέστε τα αρχεία JSON

    Ανεβάστε απαντήσεις API, εξαγόμενες ρυθμίσεις ή παραγόμενα manifests ως .json, έως 20 αρχεία και 95 MB το καθένα. Κάθε αρχείο πρέπει να περιέχει μία έγκυρη τιμή JSON.

  2. 2

    Αφήστε τις προεπιλογές

    Το YAML είναι ήδη επιλεγμένο στο Μετατροπή σε. Για ένα αρχείο ρυθμίσεων δεν χρειάζεται να αλλάξετε τίποτα άλλο· η έξοδος χρησιμοποιεί εσοχή δύο κενών.

  3. 3

    Μετατρέψτε και κάντε commit

    Πατήστε Μετατροπή σε YAML, κατεβάστε τα αρχεία .yaml, προσθέστε σχόλια εκεί που θα τα χρειαστεί ο επόμενος αναγνώστης και κάντε commit.

Απάντηση

Πώς μετατρέπω JSON σε YAML;

Ανεβάστε το αρχείο .json και πατήστε Μετατροπή σε YAML. Τα αντικείμενα γίνονται μπλοκ key: value με εσοχές, οι πίνακες γίνονται λίστες με παύλες και οι συμβολοσειρές που το YAML θα μπορούσε να διαβάσει λάθος διατηρούν τα εισαγωγικά τους.

Γιατί να μετατρέψετε JSON σε YAML για αρχεία ρυθμίσεων

Το περισσότερο JSON παράγεται από λογισμικό: απάντηση API, εξαγωγή ρυθμίσεων, έξοδος γεννήτριας. Το περισσότερο YAML το συντηρούν άνθρωποι. Η μετατροπή συνήθως σηματοδοτεί τη στιγμή που τα δεδομένα παύουν να είναι έξοδος μηχανής και γίνονται κάτι που ανήκει σε μια ομάδα, όπως ένα deployment manifest στο Git, ένα CI pipeline ή ένα σύνολο μεταβλητών Ansible.

Μια τυπική περίπτωση: καλείτε ένα cloud API, παίρνετε πίσω μια περιγραφή πόρου 200 γραμμών σε JSON και θέλετε να την κρατήσετε ως infrastructure code. Η μετατροπή δίνει αρχείο χωρίς άγκιστρα και κόμματα, όπου μια αλλαγή μίας γραμμής δίνει diff μίας γραμμής και μπορείτε να εξηγήσετε παράξενες τιμές με σχόλια. Το ίδιο ισχύει για test fixtures και αρχεία μετάφρασης που επεξεργάζονται μη προγραμματιστές. Όταν χρειάζεστε αντί γι' αυτό έναν επίπεδο πίνακα, για υπολογιστικό φύλλο ή αναφορά, το JSON σε CSV ταιριάζει καλύτερα.

Εργαλεία με αρχεία ρυθμίσεων σε YAML

Πού καταλήγει συνήθως το YAML μετά τη μετατροπή
ΟργανισμόςΑπαίτησηΠηγή
GitHub ActionsΤα workflows βρίσκονται στο .github/workflows ως αρχεία .yml ή .yamlGitHub Docs
GitLab CI/CDΤο pipeline ορίζεται στο .gitlab-ci.yml στη ρίζα του αποθετηρίουGitLab Docs
Docker ComposeΟι υπηρεσίες περιγράφονται στο compose.yaml (παλαιότερα docker-compose.yml)Docker Docs
AnsibleΤα playbooks και τα αρχεία μεταβλητών γράφονται σε YAMLAnsible Docs
KubernetesΤα manifests δέχονται JSON ή YAML· η τεκμηρίωση και τα Helm charts χρησιμοποιούν YAMLKubernetes

Παράδειγμα μετατροπής JSON σε YAML με δύσκολες τιμές

Έξοδος YAML για {"name":"api","version":"1.10","debug":false,"tags":["web","eu"],"country":"NO"}
name: api
version: "1.10"
debug: false
tags:
  - web
  - eu
country: "NO"  # σε εισαγωγικά, αλλιώς το YAML 1.1 το διαβάζει ως false

Τι σας δίνει το YAML

  • Σχόλια με #
  • Μικρότερα diffs στο code review
  • Χωρίς άγκιστρα, κόμματα ή εισαγωγικά στις περισσότερες γραμμές
  • Κείμενο πολλών γραμμών με block scalars |

Τι να προσέξετε

  • Η εσοχή έχει νόημα, οπότε ένα κενό παραπάνω αλλάζει τη δομή
  • Τα tab δεν επιτρέπονται για εσοχές
  • Οι συμβολοσειρές χωρίς εισαγωγικά μπορεί να διαβαστούν ως αριθμοί ή λογικές τιμές
  • Πιο αργοί και λιγότερο ομοιόμορφοι parsers από το JSON

Το παράδειγμα δείχνει γιατί μια απλή αντικατάσταση αγκίστρων δεν αρκεί. Η έκδοση 1.10 είναι συμβολοσειρά στο JSON· γραμμένη χωρίς εισαγωγικά στο YAML θα διαβαζόταν ως ο αριθμός 1.1. Το NO, ο κωδικός ISO της Νορβηγίας, θα διαβαζόταν ως false από parsers YAML 1.1 όπως το PyYAML. Και τα δύο κρατούν τα εισαγωγικά τους, ενώ οι πραγματικοί αριθμοί και οι λογικές τιμές μένουν χωρίς.

Σύγκριση JSON και YAML

JSON

JavaScript Object Notation

Το JSON είναι μια ελαφριά μορφή κειμένου για δομημένα δεδομένα, που διαδόθηκε από τον Douglas Crockford στις αρχές της δεκαετίας του 2000 και τυποποιήθηκε ως RFC 8259 και ECMA-404. Αναπαριστά αντικείμενα, πίνακες, συμβολοσειρές, αριθμούς, λογικές τιμές και null με απλή, ευανάγνωστη σύνταξη. Είναι η προεπιλεγμένη μορφή για web APIs, αρχεία ρυθμίσεων και ανταλλαγή δεδομένων μεταξύ εφαρμογών σε σχεδόν κάθε γλώσσα προγραμματισμού. Δεν έχει ενσωματωμένα σχόλια, ημερομηνίες ή σχήματα, και τα μεγάλα εμφωλευμένα αρχεία διαβάζονται δύσκολα χωρίς πρόγραμμα προβολής.

Συμπίεση
–
Διαφάνεια
–
Κινούμενη εικόνα
–
Έτος εισαγωγής
2001 · Douglas Crockford
Μετατροπέας JSON

YAML

YAML

Το YAML («YAML Ain't Markup Language») είναι μια φιλική προς τον άνθρωπο μορφή δεδομένων, που κυκλοφόρησε πρώτη φορά το 2001. Χρησιμοποιεί εσοχές αντί για αγκύλες, υποστηρίζει σχόλια και είναι υπερσύνολο του JSON. Χρησιμοποιείται ευρέως για ρυθμίσεις στα Docker Compose, Kubernetes, GitHub Actions και σε πολλές εφαρμογές. Επειδή βασίζεται στα κενά, χαλάει εύκολα με ένα μόνο λάθος τοποθετημένο κενό, και ορισμένες τιμές, όπως το «no» ή οι ημερομηνίες, μπορεί να ερμηνευτούν απρόσμενα.

Συμπίεση
–
Διαφάνεια
–
Κινούμενη εικόνα
–
Έτος εισαγωγής
2001 · Clark Evans, Ingy döt Net, Oren Ben-Kiki
Μετατροπέας YAML

Μετατρέπουν JSON σε YAML όταν δεδομένα από API ή γεννήτριες πρέπει να γίνουν αρχείο ρυθμίσεων που συντηρούν άνθρωποι, ελέγχουν σε pull requests και σχολιάζουν.

Ερωτήσεις για τη μετατροπή JSON σε YAML

Είναι το JSON ήδη έγκυρο YAML;

Στο YAML 1.2 ναι: η αναθεώρηση του 2009 γράφτηκε ώστε κάθε έγγραφο JSON να είναι και έγγραφο YAML. Θα μπορούσατε να επικολλήσετε JSON σε αρχείο .yaml και τα περισσότερα εργαλεία θα το δέχονταν. Η μετατροπή αφορά την αναγνωσιμότητα: το block στυλ χωρίς άγκιστρα, εισαγωγικά και κόμματα είναι αυτό που περιμένουν όσοι κάνουν review και ο επόμενος υπεύθυνος συντήρησης.

Γιατί ορισμένες τιμές μπαίνουν σε εισαγωγικά στο YAML;

Επειδή χωρίς εισαγωγικά το YAML θα τις διάβαζε ως άλλον τύπο. Μια έκδοση όπως 1.10 θα γινόταν ο αριθμός 1.1, και τα yes ή off θα μπορούσαν να γίνουν λογικές τιμές σε παλαιότερους parsers. Οι συμβολοσειρές που μοιάζουν με αριθμούς, ημερομηνίες ή λογικές τιμές χρειάζονται εισαγωγικά για να μείνουν συμβολοσειρές, γι' αυτό μια προσεκτική μετατροπή τα διατηρεί.

Μπορώ να προσθέσω σχόλια μετά τη μετατροπή;

Ναι, και αυτός είναι συχνός λόγος μετατροπής. Γράψτε # και μετά τη σημείωσή σας στο τέλος μιας γραμμής ή σε δική της γραμμή. Το JSON δεν είχε τρόπο να εξηγήσει γιατί ορίζεται μια τιμή· το YAML έχει, κάτι που διευκολύνει τα review και τις παραδόσεις έργου.

Γιατί το YAML μου αποτυγχάνει με σφάλμα χαρακτήρα tab;

Η προδιαγραφή YAML απαγορεύει τα tab για εσοχές· μετρούν μόνο τα κενά. Ο μετατροπέας γράφει κενά, αλλά ένας επεξεργαστής ρυθμισμένος να εισάγει tab μπορεί να χαλάσει το αρχείο στην επόμενη επεξεργασία. Ρυθμίστε τον επεξεργαστή σας να χρησιμοποιεί κενά στα αρχεία .yaml.

Θα δεχτεί το Kubernetes το μετατρεπόμενο manifest;

Το kubectl διαβάζει και JSON και YAML, οπότε τα δεδομένα είναι τα ίδια· η έκδοση YAML είναι απλώς αυτή που χρησιμοποιούν οι περισσότερες τεκμηριώσεις, τα Helm charts και τα code review. Αν αργότερα χρειαστείτε ξανά JSON για jq ή κλήση API, το YAML σε JSON το αντιστρέφει.