Μετατροπέας .env σε JSON
Μετατρέψτε ένα αρχείο .env σε JSON, ή ένα επίπεδο
αντικείμενο JSON πίσω σε μορφή .env. Επειδή τα αρχεία .env συχνά περιέχουν πραγματικούς κωδικούς
πρόσβασης, κλειδιά API και tokens, όλα αυτά γίνονται στο
πρόγραμμα περιήγησής σας — τίποτα από όσα επικολλάτε δεν
στέλνεται πουθενά.
Οι τιμές παραμένουν ειλικρινείς συμβολοσειρές — καμία σιωπηλή εικασία
Ένα αρχείο .env δεν έχει σύστημα τύπων: οτιδήποτε
ακολουθεί το = είναι απλό κείμενο. Αυτό το εργαλείο
το σέβεται αυτό αντί να προσπαθεί να είναι έξυπνο — DEBUG=true γίνεται η συμβολοσειρά JSON "true", όχι το boolean true, και PORT=8080 γίνεται η συμβολοσειρά "8080", όχι αριθμός. Αν ο κώδικάς σας χρειάζεται
πραγματικά boolean ή αριθμούς, αυτή η μετατροπή γίνεται σκόπιμα
στον κώδικά σας, όχι σιωπηλά μέσα σε αυτό το εργαλείο.
Πρακτικό παράδειγμα: .env → JSON
Είσοδος:
# Database config DB_HOST=localhost DB_PASSWORD="p@ss w0rd" DEBUG=true EMPTY_VAL=
μετατρέπεται σε:
{
"DB_HOST": "localhost",
"DB_PASSWORD": "p@ss w0rd",
"DEBUG": "true",
"EMPTY_VAL": ""
}
Η γραμμή σχολίου εξαφανίζεται, τα εισαγωγικά γύρω από την τιμή
του DB_PASSWORD αφαιρούνται (αφήνοντας το κενό
μέσα ανέπαφο), και το DEBUG παραμένει η
συμβολοσειρά "true" αντί να γίνει boolean.
Πρακτικό παράδειγμα: JSON → .env
Είσοδος:
{
"DB_HOST": "localhost",
"DB_PASSWORD": "p@ss w0rd",
"DEBUG": true,
"PORT": 8080
} μετατρέπεται σε:
DB_HOST=localhost DB_PASSWORD="p@ss w0rd" DEBUG=true PORT=8080
Το DB_PASSWORD μπαίνει σε εισαγωγικά επειδή η τιμή
του περιέχει κενό διάστημα· τα υπόλοιπα δεν χρειάζονται
εισαγωγικά, οπότε γράφονται όπως είναι για να παραμένει το
αρχείο εύκολο στην ανάγνωση.
Συχνές ερωτήσεις
Γιατί το DEBUG=true γίνεται η συμβολοσειρά JSON "true" και όχι το boolean true;
Επειδή αυτό ακριβώς είναι. Ένα αρχείο .env δεν έχει σύστημα τύπων — οτιδήποτε βρίσκεται δεξιά του = είναι απλό κείμενο, οπότε το DEBUG=true και το DEBUG=yes είναι εξίσου απλώς οι χαρακτήρες που ακολουθούν το σύμβολο ίσον. Αυτό το εργαλείο δεν μαντεύει ποτέ ότι μια τιμή "μοιάζει" με boolean ή αριθμό και τη μετατρέπει σιωπηλά· το DEBUG=true γίνεται η συμβολοσειρά JSON "true", και το PORT=8080 γίνεται η συμβολοσειρά "8080", όχι ο αριθμός 8080. Αν η εφαρμογή σας χρειάζεται πραγματικά boolean ή αριθμούς, μετατρέψτε τα ρητά στον κώδικά σας μετά την ανάλυση — είναι μια απόφαση που αυτό το εργαλείο αφήνει σκόπιμα σε εσάς αντί να μαντεύει.
Ποια είναι η διαφορά στον τρόπο που αντιμετωπίζονται οι τιμές με και χωρίς εισαγωγικά;
Οι τιμές σε διπλά εισαγωγικά ( ΚΛΕΙΔΙ="έτσι" ) έχουν τις ακολουθίες διαφυγής με ανάστροφη κάθετο (backslash) να αποκωδικοποιούνται — το \n γίνεται πραγματική νέα γραμμή, το \" γίνεται κυριολεκτικό εισαγωγικό, και το \\ γίνεται μία ανάστροφη κάθετος — ακολουθώντας τη συνηθισμένη σύμβαση του dotenv. Οι τιμές σε μονά εισαγωγικά ( ΚΛΕΙΔΙ='έτσι' ) και οι τιμές χωρίς εισαγωγικά λαμβάνονται εντελώς κυριολεκτικά: δεν γίνεται καμία επεξεργασία διαφυγής, οπότε μια ανάστροφη κάθετος στο ΚΛΕΙΔΙ=C:\διαδρομή παραμένει ακριβώς ως δύο χαρακτήρες, μια ανάστροφη κάθετος και ένα "δ". Μόνο τα διπλά εισαγωγικά ενεργοποιούν την αποκωδικοποίηση διαφυγής.
Τι συμβαίνει αν το JSON μου έχει ένθετο αντικείμενο ή πίνακα ως τιμή κατά τη μετατροπή σε .env;
Τα αρχεία .env είναι εκ φύσεως επίπεδα — κάθε γραμμή είναι ΚΛΕΙΔΙ=ΤΙΜΗ, χωρίς τρόπο αναπαράστασης δομής. Αντί να επινοήσει σιωπηλά ένα σχήμα ισοπέδωσης που δεν ζητήσατε (όπως η μετατροπή του {"db": {"host": "x"}} σε DB_HOST=x), αυτό το εργαλείο απορρίπτει τη μετατροπή και αναφέρει ακριβώς ποιο κλειδί περιέχει την ένθετη τιμή, ώστε να το ισοπεδώσετε εσείς με τον τρόπο που βγάζει νόημα για το έργο σας — ή να το αφαιρέσετε.
Ανεβαίνει το αρχείο .env μου κάπου; Έχει πραγματικούς κωδικούς πρόσβασης.
Όχι — και αυτό έχει μεγαλύτερη σημασία εδώ απ' ό,τι σχεδόν οπουδήποτε αλλού στο site. Τα αρχεία .env συχνά περιέχουν κωδικούς βάσεων δεδομένων, κλειδιά API και tokens. Η ανάλυση και προς τις δύο κατευθύνσεις γίνεται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας με απλή επεξεργασία συμβολοσειρών JavaScript· τίποτα από όσα πληκτρολογείτε ή επικολλάτε δεν στέλνεται ποτέ σε server, δεν αποθηκεύεται, δεν καταγράφεται και δεν περιλαμβάνεται σε καμία ανάλυση επισκεψιμότητας. Το κλείσιμο της καρτέλας διαγράφει τα πάντα.
Πώς αποφασίζει αυτό το εργαλείο αν θα βάλει μια τιμή σε εισαγωγικά κατά τη μετατροπή από JSON σε .env;
Μια τιμή τυλίγεται σε διπλά εισαγωγικά μόνο όταν περιέχει κενό διάστημα ή έναν από τους χαρακτήρες " ' # \ — οτιδήποτε διαφορετικά θα έκανε τη γραμμή διφορούμενη όταν διαβαστεί ξανά. Μέσα σε αυτά τα εισαγωγικά, μια κυριολεκτική ανάστροφη κάθετος ή διπλό εισαγωγικό αποκτούν διαφυγή ώστε το αποτέλεσμα να είναι έγκυρο για επανανάλυση. Απλές τιμές όπως true, 8080 ή localhost γράφονται χωρίς εισαγωγικά, αφού η προσθήκη τους δεν θα πρόσθετε τίποτα άλλο εκτός από οπτικό θόρυβο.
Παραλείπει αυτό τα σχόλια και τις κενές γραμμές στο αρχείο .env μου;
Ναι. Οι κενές γραμμές και κάθε γραμμή της οποίας ο πρώτος μη κενός χαρακτήρας είναι # παραλείπονται εντελώς κατά τη μετατροπή από .env σε JSON, ακριβώς όπως τις αντιμετωπίζει κάθε πραγματικός φορτωτής dotenv. Μια γραμμή χωρίς κανένα σύμβολο = παραλείπεται επίσης, αντί να γίνεται μια τυχαία εικασία.