ממיר JSON ל-YAML
הפכו JSON ל-YAML נקי וידידותי לקריאה עבור Kubernetes, Docker Compose, GitHub Actions או Ansible, עם שליטה מלאה בהזחה, בסגנון ובמירכאות.
רץ בדפדפן שלכםבלי הרשמהשום דבר לא מועלה
איך משתמשים בכלי JSON ל-YAML
- הדביקו JSON בתיבת הקלט או פתחו קובץ
.json. - ה-YAML מופיע בתיבת הפלט תוך כדי הקלדה.
- בחרו את ההזחה (2 או 4 רווחים) ואת הסגנון: block (מפתח אחד בכל שורה) או flow (
{a: 1}/[x, y]) החל מרמת קינון מסוימת. - בחרו סגנון מירכאות וסמנו מיון מפתחות אם אתם רוצים סדר אלפביתי.
- העתיקו או הורידו את ה-YAML. JSON לא תקין מדווח עם השורה, העמודה והסיבה הסבירה.
למה להמיר JSON ל-YAML?
JSON אידיאלי למכונות ול-API, אבל YAML קל יותר לבני אדם לקריאה ולעריכה: בלי סוגריים מסולסלים, בלי מירכאות חובה, ועם תמיכה בהערות. רוב כלי התשתית, כולל Kubernetes, Helm, Docker Compose, GitHub Actions, GitLab CI ו-Ansible, מוגדרים ב-YAML, בעוד שהנתונים שמהם מתחילים (פלט API, kubectl get -o json, Terraform state) הם לרוב JSON.
סגנון block לעומת flow
סגנון block שם כל מפתח ופריט רשימה בשורה משלו, וזו הבחירה המקובלת לקובצי תצורה. סגנון flow משתמש ב-{} וב-[] בתוך השורה, כמו JSON, ושומר על מבנים קצרים בקצוות העץ קומפקטיים. „Flow מרמה 2” משאיר את שתי הרמות העליונות בסגנון block ומכניס לשורה אחת את כל מה שעמוק יותר, וזה עובד טוב לרשימות ארוכות של אובייקטים קטנים, כמו פורטים או משתני סביבה.
מירכאות בטוחות
מחרוזות שמפענח YAML עלול לפרש לא נכון מוקפות במירכאות אוטומטית: ערכים כמו 'no', 'on', '1.0', 'null', מחרוזות שמתחילות ב-* או ב-&, ומחרוזות שמכילות : . בחרו תמיד בודדות או תמיד כפולות אם מדריך הסגנון שלכם דורש שכל מחרוזת תהיה במירכאות.
מלכודות של YAML 1.1 לעומת 1.2
הממיר הזה פועל לפי YAML 1.2, המפרט הנוכחי. כלים ישנים רבים (PyYAML, Psych של Ruby, וחלק מגרסאות Kubernetes ו-Ansible) עדיין קוראים YAML 1.1, שבו הכללים שונים:
- בעיית נורווגיה: ב-YAML 1.1,
country: noפירושוfalse, ולכן קוד המדינה של נורווגיהNOנעלם. אותו דבר נכון ל-yes,on,off,yו-n. YAML 1.2 מתייחס רק ל-trueול-falseכערכים בוליאניים. - מספרים אוקטליים:
0755הוא אוקטלי ב-1.1 אבל עשרוני רגיל ב-1.2, שמשתמש ב-0o755. הקיפו הרשאות קבצים במירכאות ליתר ביטחון. - מספרים בבסיס 60: ב-1.1,
22:30עלול להתפרש כמספר 1350. הקיפו במירכאות שעות ומיפויי פורטים כמו"8080:80".
בכיוון JSON → YAML מחרוזות דו-משמעיות ('no', 'on', 'y') מוקפות במירכאות אוטומטית, כך שה-YAML שנוצר נקרא אותו דבר בשתי הגרסאות.
שאלות נפוצות
האם ההמרה ללא אובדן מידע?
למה חלק מהמחרוזות במירכאות וחלק לא?
'yes', '123' או מחרוזות עם תווים מיוחדים. כל השאר נשאר רגיל לטובת הקריאות.אפשר להוסיף הערות לפלט?
# comments ל-YAML אחרי שמעתיקים אותו.