ממיר JSON ל-YAML

הפכו JSON ל-YAML נקי וידידותי לקריאה עבור Kubernetes,‏ Docker Compose,‏ GitHub Actions או Ansible, עם שליטה מלאה בהזחה, בסגנון ובמירכאות.

רץ בדפדפן שלכםבלי הרשמהשום דבר לא מועלה

פלט JSON

איך משתמשים בכלי JSON ל-YAML

  1. הדביקו JSON בתיבת הקלט או פתחו קובץ .json.
  2. ה-YAML מופיע בתיבת הפלט תוך כדי הקלדה.
  3. בחרו את ההזחה (2 או 4 רווחים) ואת הסגנון: block (מפתח אחד בכל שורה) או flow‏ ({a: 1}/[x, y]) החל מרמת קינון מסוימת.
  4. בחרו סגנון מירכאות וסמנו מיון מפתחות אם אתם רוצים סדר אלפביתי.
  5. העתיקו או הורידו את ה-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 שנוצר נקרא אותו דבר בשתי הגרסאות.

שאלות נפוצות

האם ההמרה ללא אובדן מידע?
כן. כל מסמך JSON הוא YAML 1.2 תקין, וה-YAML שנוצר מתפענח בחזרה בדיוק לאותם נתונים. אפשר לבדוק זאת בלחיצה על החלפה.
למה חלק מהמחרוזות במירכאות וחלק לא?
עם רק כשצריך, מירכאות מתווספות רק במקומות שבהם ערך בלי מירכאות היה משנה את משמעותו, למשל 'yes', '123' או מחרוזות עם תווים מיוחדים. כל השאר נשאר רגיל לטובת הקריאות.
אפשר להוסיף הערות לפלט?
ב-JSON אין הערות, ולכן אין מה להמיר, אבל אפשר להוסיף # comments ל-YAML אחרי שמעתיקים אותו.
האם סדר המפתחות משתנה?
לא. המפתחות שומרים על הסדר שלהם ב-JSON, אלא אם מסמנים מיון מפתחות.
האם הנתונים שלי פרטיים?
כן. הממיר רץ בדפדפן שלכם ולא שולח בקשות רשת עם הקלט שלכם.

כלים קשורים