Μετατροπέας JSON σε YAML
Επικολλήστε το JSON σας παρακάτω για ένα ευανάγνωστο YAML — ένθετα αντικείμενα και πίνακες με σωστή εσοχή σε μορφή μπλοκ, και συμβολοσειρές με εισαγωγικά μόνο όταν διαφορετικά θα ήταν διφορούμενες. Τίποτα από όσα επικολλάτε δεν ανεβαίνει πουθενά — η μετατροπή γίνεται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας.
Πάρτε ένα YAML που διαβάζεται σαν να γράφτηκε με το χέρι
Τα αντικείμενα γίνονται γραμμές κλειδί: τιμή, με
εσοχή 2 κενών ανά επίπεδο ένθεσης· όταν μια τιμή είναι η ίδια
αντικείμενο ή πίνακας, μεταφέρεται στις δικές της γραμμές με
εσοχή αντί να μένει σε μία γραμμή. Οι πίνακες γίνονται μπλοκ
λίστας με πρόθεμα - στο ίδιο επίπεδο εσοχής με το
κλειδί που τους ανήκει — ποτέ ένα [a, b] σε στυλ
ροής. Οι συμβολοσειρές τυλίγονται σε διπλά εισαγωγικά μόνο όταν
η απουσία τους θα ήταν πραγματικά διφορούμενη — κενές, αρχίζουν
με δεσμευμένο χαρακτήρα, περιέχουν : (άνω-κάτω
τελεία συν κενό, που το YAML θα αντιμετώπιζε ως δικό του
διαχωριστικό), ή ταιριάζουν με λέξη-κλειδί ή αριθμό του YAML.
Όλα τα υπόλοιπα μένουν χωρίς εισαγωγικά για ευαναγνωσιμότητα.
Πρακτικό παράδειγμα
Είσοδος:
{"name": "Alice", "age": 30, "active": true, "tags": ["a", "b"], "address": {"city": "Rome", "zip": "00100"}, "note": "value: with colon"} μετατρέπεται σε:
name: Alice age: 30 active: true tags: - a - b address: city: Rome zip: "00100" note: "value: with colon"
Παρατηρήστε ότι το tags γίνεται μια σωστά
εσοχοποιημένη λίστα αντί να μείνει σε μία γραμμή, το address γίνεται μια ένθετη αντιστοίχιση με τα city και zip με εσοχή από κάτω, η τιμή "00100" του zip μπαίνει σε εισαγωγικά
γιατί διαφορετικά θα διαβαζόταν ως αριθμός, και η τιμή του note μπαίνει σε εισαγωγικά γιατί το : with colon περιέχει άνω-κάτω τελεία ακολουθούμενη
από κενό — ακριβώς η ακολουθία που χρησιμοποιεί το YAML για να
διαχωρίσει ένα κλειδί από την τιμή του.
Συχνές ερωτήσεις
Γιατί ο πίνακάς μου εμφανίζεται ως λίστα με εσοχή αντί για [a, b];
Αυτός ο μετατροπέας χρησιμοποιεί πάντα το στυλ μπλοκ του YAML, όχι το στυλ ροής — ένας πίνακας `tags` γίνεται λίστα με πρόθεμα `-` σε δικές του γραμμές με εσοχή, αντί για ένα `[a, b]` σε μία γραμμή. Το στυλ μπλοκ είναι η μορφή που έχει το περισσότερο χειρόγραφο YAML (και η έξοδος των περισσότερων εργαλείων YAML), και παραμένει ευανάγνωστο και εύκολο στη σύγκριση ακόμα κι όταν η λίστα είναι μεγάλη.
Γιατί μερικές από τις συμβολοσειρές μου έχουν εισαγωγικά και άλλες όχι;
Μια συμβολοσειρά μπαίνει σε εισαγωγικά μόνο όταν η απουσία τους θα ήταν πραγματικά διφορούμενη: αν είναι κενή, ξεκινά με έναν δεσμευμένο χαρακτήρα όπως `- ? : # & * ! | > ' " % @`, περιέχει `: ` (άνω-κάτω τελεία ακολουθούμενη από κενό, που το YAML θα διάβαζε ως δικό του διαχωριστικό κλειδιού/τιμής), ή θα παρερμηνευόταν ως λέξη-κλειδί ή αριθμός του YAML — το κυριολεκτικό κείμενο "true", "false", "null", ή κάτι όπως "123" ή "00100" που αναλύεται ως αριθμός. Όλα τα υπόλοιπα μένουν χωρίς εισαγωγικά για ευαναγνωσιμότητα, αφού τα περιττά εισαγωγικά απλώς προσθέτουν οπτικό θόρυβο.
Επικυρώνει αυτό το εργαλείο το JSON μου πριν το μετατρέψει;
Ναι — η ανάλυση περνάει μέσα από την JSON.parse, οπότε ένα μη έγκυρο JSON εμφανίζει το πραγματικό μήνυμα SyntaxError του προγράμματος περιήγησης αντί να παράγει σιωπηλά ένα χαλασμένο YAML. Διορθώστε το πρόβλημα που αναφέρεται και η μετατροπή τρέχει αυτόματα.
Ανεβαίνει το JSON μου κάπου;
Όχι. Η ανάλυση και η δημιουργία του YAML γίνονται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας — τίποτα από όσα επικολλάτε δεν στέλνεται, δεν αποθηκεύεται και δεν καταγράφεται πουθενά. Ισχύει ο ίδιος κανόνας για κάθε εργαλείο αυτού του site.
Τι συμβαίνει με τα κενά αντικείμενα και τους κενούς πίνακες;
Ένα κενό αντικείμενο γίνεται `{}` και ένας κενός πίνακας γίνεται `[]`, γραμμένα σε μία γραμμή μαζί με το κλειδί που τα κατέχει — ακριβώς όπως η δική της σύνταξη κενού container του JSON, αφού δεν υπάρχει τίποτα να απαριθμηθεί σε ξεχωριστές γραμμές.