Σύστημα JSON -> TOML
Ο Σκοπός της μετατροπής (Εξαγωγής/Migrate) Από JSON.. σε TOML Format;
Όπως λένε οι Developers... 'Το Json EINAI KOΛΑΣΗ για να γράψεις Configuration/Ρυθμίσεις!'.. Και έχουν Δίκιο! Το Json δεν επιτρέπει Σχόλια (Comments), Θέλει Εκατοντάδες Εισαγωγικά (`""`), και τα (Nested Data / Υπο-κουτιά) τραβάνε το κείμενο τέρμα Δεξιά... Κάνοντας Το TOML Τεράστια Όαση/Ανακούφιση! Mε Τα Δευτερεύοντα [Επικεφαλίδες / Tables / Ενότητες - Sections] του.. Και τα (= , Ισα)... Τα δεδομένα 500 γραμμών JSON, γίνονται Ξαφνικά ένα Υπέροχο (200 Γραμμών) Περιοδικό / Ανάγνωσμα προς (Modifying/Config Setup)!
Τεχνητή Νοημοσύνη (Πινάκων/Ενοτήτων / Tables Generator)
Οι.. Άπειρες Φωλιές (Nested Objects JSON ` { { {} } } `).. Mεταμορφώνονται Μαγικά σε όμορφα (TOML-Paths/Ενότητες) : P.x => `[section.subsection.inner]` !!
Προστασία - (Αυτονομία) Types Values
Ο Μετατροπέας αναγνωρίζει τις Int / Bool / String Πηγές απο To Json ... Σεβόμενος την Αξία τους (Και το Format Quotes ! )
Απόλυτη Καθαρότητα & (Μινιμαλισμός KBs)
Τα Ίδια Δεδομένα του JSON, Οταν Μετατραπούν (Ορθολογικά) Σε Toml... Καταλαμβάνουν 20-30% λιγότερο όγκο Χαρακτήρων (Λιγοτερα Brackets , Quotes, Commas).
Φυγαδεύστε τα Configuration σας ΣΕ TOML... (3 Βηματα)!..
Επικολλήστε ΑΥΣΤΗΡΟ κώδικα (JSON)
Ανοίξτε το config.json σας.. (Όπως του VS Code Settings κλπ) .. Αντιγράψτε ΑΥΣΤΗΡΑ/Εγκυρα JSON δεδομένα Στο πρώτο παράθυρο.
On-The-Fly / Άμεση ΤΟΜL Ανάλυση
Ο TOML Generator / Lexer , Δημιουργεί την (Root-Scope) Βασική βαθμίδα.. Και μετά 'Σπάει / Κατεβαίνει Δέντρα.. ' Γράφοντας τις κατηγορίες [ΟΝΟΜΑ_ΚΑΤΗΓΟΡΙΑΣ].
Εμπλουτισμός -> (Setup the Toml File)
Κανένα Mηχάνημα δεν ξέρει ΤΙ χρειάζεστε... Tο Toml (Μετά το Copy) - Επιβάλλεται να 'Ανοιχτεί' απο εσάς - Και να Προσθέσετε #ΣΧΟΛΙΑ-Notes , ώστε να το θυμάστε/Ξέρετε τι κάνει η Κάθε παράμετρος! Αυτή ειναι η αξία του!!
Κλασσικές Μεταναστεύσεις (Migrations / Setups)
Νοικοκύρεμα στο (Cargo.toml/Rust/Cargo Core)
Μεταφέρατε δεδομένα απο το 'package.json (Node/JS)'.. Στήνοντας/Βοηθώντας το νέο σας Μεγάλο Αδερφάκι (Rust / Cargo Ecosystem ) να βρει Τα Dependencies.. (Package/Author/Versions) !
Eκσυχρονισμός της Python ( Migrate To pyproject.toml )
Η (PEP 518) έφερε το ΤOML Στην Επιφάνεια.. Πετάξτε τα απαρχαιωμένα setup.cfg ... Και μεταφέρετε τα Properties (json-dicts) του setup, Στο σύγχρονο μοντέλο!
Γενικό Application Settings Config (Η Δύναμη/Settings File)
Μετατρέψτε το βαρύ/άκομψο (JSON APP-Settings) Σας ... Σε File (Config.toml).. Ωστε Οι 'Τελικοί-Ανθρωποι-Χρήστες-Admins' να μπορούν εύκολα να το διαβάζουν , Και να Πειράζουν (Tweaks) τον Server / App σας!!
Ταυτόχρονη... Αρμονία Διαμερισμού Δεδομένων (Data Translation/Sharing)
Λειτουργεί ως 'Γέφυρα/Αντάπτορας', Αν το C.I/C.D Σύστημα Σας Εξάγει/Φτύνει JSON ... Αλλά Ο Go/Rust Server σας.. Εχει Φτιαχτεί/Διαβάζει - ΜΟΝΟ .TOML αρχεία!.
Προσοχή.. (The Gothchas / Toml Translator Traps) !!
✓ Το (ΜΕΓΙΣΤΟΠΟΙΗΜΕΝΟ) πρόβλημα των Arrays-Of-Objects ( JSON [ {a}, {b} ] )
O Αλγόριθμος του Τοml: ΟΤΑΝ Βρει [ Λιστα Αντικειμένων Στο Json..] .. ΔΗΜΙΟΥΡΓΕΙ ΤΙΣ ΕΤΙΚΕΤΕΣ ME ΔΙΠΛΑ-BRACKETS => `[[ name ]] ` ! ΔΕΝ ΕΙΝΑΙ ΣΦΑΛΜΑ! ΕΙΝΑΙ Ο ΣΩΣΤΟΣ-ΤΡΟΠΟΣ ΤOML. (Δηλώνει: Το 'name' είναι Η ΛΙΣΤΑ, Και βάζω απο κατω τα values) !
✓ Συναγερμός / (ΤO TOML... ΜΙΣΕΙ .. ΣΙΧΑΙΝΕΤΑΙ ΤΟ JSON-NULL !!)
Το 100% Core/Σύνταξης του Toml... ΔΕΝ ΥΠΟΣΤΗΡΙΖΕΙ !! ΔΕΝ ΕΧΕΙ (NULL VALUES/ KENH-MHDENIKH ΑΞΙΑ) ! Αν το Json σας έχει Null `{"a" : null } `... O Parser Είτε θα ΤΟ ΑΓΝΟΗΣΕΙ ΤΕΛΕΙΩΣ (Ignored Key) , Είτε θα πεταχθεί (TypeError ! Exception). Το Toml, θεωρεί οτι 'Το να ΜΗΝ Γραψεις το Key... ειναι σαν να ηταν NULL.. ΑΡΑ ΓΙΑΤΙ ΝΑ ΤΟ ΓΡΑΨΕΙΣ ?'
✓ Τα 'Περίεργα/Ξένα' Ονόματα Key/Ιδιοτήτων... Παίρνουν "Εισαγωγικά"
Στο TOML.. Τα Κλειδιά ΕΙΝΑΙ ΓΥΜΝΑ ( Πχ `Title = 'Hello' `). Εάν το 'Key' Σας ΟΜΩΣ.. Eχει Κενά-Spaces Η (Παύλες / Hyphens - ) ΟΠΩΣ: {' content-type ' : 'json' } ... TOTE Το ΤΟΜL αναγκάζεται ΝΑ ΤΟ ΝΤΥΣΕΙ ΜΕ `" "` Εισαγωγικά !!
✓ Μη το Χρησιμοποιείτε ΧΩΡΙΣ (TESTING PARSER Library) !
Καθε Γλώσσα.. (Τοml-Rs / Python Tomllib / Node-Iarna.. ) - Ενδεχεται ΝΑ διαβαζει τα (Deeper Nested / Extreme Case Tomls) Με Τον δικο της Διαφορετικό τρόπο! Μετά την μετατροπή - Πάντα ΝΑ ΤΡΕΧΕΤΕ ΕΝΑ BUILD-LOAD/Test Script!.
❓ Απορίες... Converter / Standards FAQ
Όλοι οι Τύποι του Json... μεταφέρονται - '1' Πρός '1' ... (1-1) Σε TOML;
Σχεδόν. (Το String->Γίνεται String Τοml.. / Οι Αριθμοί-> Αριθμοί / Arrays->Arrays / Boolean->Bool). ΩΣΤΟΣΟ το Τεράστιο/Σκοτεινό προβλημα.... Ειναι οπως προ-είπαμε (Το NULL). Το ΤοML Δεν το καταλαβαίνει. Οπότε Ή Διαγράφεται - Ή Προκαλεί Bug. Η λύση? Φιλτράρετε το json Σας... να διώξετε τα (Null.. - βάζοντας empty-strings "").
Είναι Εφικτό ΝΑ ΙΣΟΠΕΔΩΣΩ το JSON (Αντικαθιστώντας Το Μία και Καλή Με Toml) σε Configuration;
Αν μιλάτε για (Static - Στατικά/Αρχεία-Settings App) ... ΒΕΒΑΙΩΣ!! Tο WebPack / Babel / Cargo / Go Servers... Όλοι εχουν Μεταβεί (Shift-Paredighm) προς TOML. Απλά Το (App-Script Σας) Πρέπει να σταματήσει Να Διαβάζει το αρχείο μέσω C++ (JSON.parse), αλλά μέσω κάποιας μικρής -ελαφριας- (Toml-Parse) library.
Yπάρχει συγκεκριμένη - ΛΟΓΙΚΗ .. Επέκταση αρχείου ; (Extensions - Format Types);
Ναί. Χαράσσετε -και τελειώνει.. σε ( .toml / Dot-Toml). Π.χ 'production.toml' . Τα Μεγάλα οικοσυστήματα εχουν βέβαια 'Προ-υπάρχοντα Καρφωτά/Διασημα' Ονόματα: Όπως το (Cargo.toml Για Rust / Python.toml / .cargo/config.toml) Κ.Ο.Κ.
Καλύψαμε Πολλά.. Ποιο το Συμπέρασμα για τον 'Developer/Μηχανικό' (JSON .. YAML.. H TOML) ??;
Ξεκαθάρισμα ρόλων: [1] Το JSON: 'Ιδιοκτησία / Και Όχημα της Απίστευτα Αποδοτικής.. - Μηχανικής Ανταλλαγής Δεδομένων ΜΗΧΑΝΩΝ/APIS (ΟΧΙ ΑΝΘΡΩΠΩΝ)' !! ... [2] To YAML: 'Mονο -και αποκλειστικά- Ενδείκνυται Σε Χωραφια Kubernetes / Devops Ci/CD (Επειδή απαιτούνται ΤΕΡΑΣΤΙΑ / ΜΑΖΙΚΑ Arrays/Nodes Σε Δέντρα Αποφάσεων). !! ... [3] Το TOML : 'Το Διαμάντι.. Το ΜΙΝΙΜΑΛ.. Το ΠΙΟ ΠΕΝΤΑΚΑΘΑΡΟ Και ΕΥΑΝΑΓΝΩΣΤΟ απο όλα: (ΣΧΕΔΙΑΣΜΕΝΟ ΓΙΑ - ΤΑ APPLICATION CONFIG/SETTINGS - ΓΙΑ ΤΟΝ ΑΝΘΡΩΠΑΚΟ/ΧΡΗΣΤΗ/ADMIN) !'