איך להשתמש בו
- בחרו את הכיוון: JSON → YAML או YAML → JSON.
- הדביקו את הנתונים או לחצו על "נסו דוגמה". התוצאה מתעדכנת תוך כדי הקלדה.
- בחרו הזחה של 2 או 4 רווחים לפלט.
- העתיקו או הורידו את התוצאה. "השתמשו בפלט כקלט" הופך את הכיוון כך שתוכלו להמיר בחזרה.
איך זה עובד
ההמרה משתמשת בספריית yaml בקוד פתוח (גרסה 2), שמממשת את מפרט YAML 1.2. YAML 1.2 הוא למעשה הרחבה של JSON, כך שכל מסמך JSON מומר ל-YAML ללא אובדן, ו-YAML שמשתמש רק במפות, רשימות, מחרוזות, מספרים, ערכים בוליאניים ו-null מומר בחזרה ל-JSON זהה.
בעת כתיבת YAML, הכלי שם מרכאות סביב מחרוזות שקורא עלול לפרש כמשהו אחר. מפענחי YAML 1.1 ישנים, כמו PyYAML וכלי CI רבים, קוראים yes, no, on ו-off כערכים בוליאניים, את 0777 כמספר אוקטלי ואת 2024-01-31 כתאריך, ולכן אלה נכתבים כ-"yes", "0777" ו-"2024-01-31". מחרוזות ארוכות אינן מקופלות למספר שורות. לא ניתן להעביר הערות, כי ל-JSON אין הערות.
בעת קריאת YAML, עוגנים (&name) וכינויים (*name) מורחבים, כולל מפתח המיזוג <<, וקובץ עם כמה מסמכים המופרדים ב--- הופך למערך JSON. כדי להגן על הדפדפן, הרחבת הכינויים מוגבלת, מה שעוצר מסמכי "billion laughs". ערכי YAML ללא מקבילה ב-JSON מומרים בצורה הקרובה ביותר: .inf ו-.nan הופכים ל-null, וחותמות זמן נשארות מחרוזות. שגיאות תחביר מדווחות עם השורה והעמודה שלהן.
דוגמאות
מניפסט Kubernetes
Deployment שנכתב כ-JSON על ידי סקריפט מומר למבנה ה-YAML שמשתמשי kubectl מצפים לו, עם רשימות תחת containers שנכתבות כ- - name: web. ערכים כמו "no" נשארים במרכאות כדי שיישארו מחרוזות.
קובץ הגדרות CI עם עוגנים
קובץ pipeline מגדיר ברירות מחדל: &defaults ועושה בהן שימוש חוזר עם <<: *defaults. המרה ל-JSON מציגה בדיוק אילו מפתחות מקבל כל job לאחר המיזוג.
מפרט OpenAPI
קובץ OpenAPI מתוחזק ב-YAML, אבל מחולל קוד צריך JSON. הדביקו את ה-YAML, בחרו הזחה של 2 רווחים והורידו את קובץ ה-.json.
שאלות נפוצות
מדוע "yes" נכתב במרכאות ב-YAML שלי?
לפי כללי YAML 1.1, שעדיין משמשים את PyYAML, Ansible וכלים רבים אחרים, yes, no, on או off ללא מרכאות הם ערך בוליאני. מרכאות שומרות על כך שהערך יישאר מחרוזת בכל מפענח. המרכאות אינן חלק מהערך.
האם הערות YAML נשמרות בעת המרה ל-JSON?
לא. ל-JSON אין תחביר הערות, ולכן ההערות נשמטות. המרה חזרה של ה-JSON ל-YAML לא תשחזר אותן.
מה קורה עם כמה מסמכי YAML המופרדים על ידי ---?
הם מומרים למערך JSON אחד עם פריט לכל מסמך, לפי הסדר. מסמך בודד מומר ישירות לערך שלו.
מה לגבי תגיות מותאמות אישית כמו !Ref של CloudFormation?
תגיות ספציפיות לאפליקציה אינן נתמכות. הכלי מציג אזהרה וממיר את הערך המתויג כערך רגיל, כך ש־!Ref MyBucket הופך למחרוזת "MyBucket" והתגית עצמה אובדת.
פרטיות
שני הכיוונים פועלים במלואם בדפדפן שלך. נתוני ה-JSON או ה-YAML שלך אינם מועלים, אינם נשמרים ואינם נכללים בניתוחי שימוש.