הגבולות של המרת JSON ↔ YAML ו-XML
הטענה ש-JSON הוא תת-קבוצה של YAML מבטיחה רק כיוון אחד, ול-XML אין מיפוי JSON רשמי כלל — הכול נשען על מוסכמה.
המרה בין JSON ל-YAML, XML, CSV, TypeScript, Java, Go ו-SQL היא לעולם לא חסרת אובדן. מה שחשוב הוא להיות מפורשים לגבי היכן האובדן מתרחש.
8 מאמריםהטענה ש-JSON הוא תת-קבוצה של YAML מבטיחה רק כיוון אחד, ול-XML אין מיפוי JSON רשמי כלל — הכול נשען על מוסכמה.
CSV הוא דו-ממדי, JSON הוא בצורת עץ. החלק הקשה בהמרה אינו הקוד — אלא ההחלטה מראש כיצד המערכים יישטחו וכיצד הטיפוסים יישמרו.
מבנים מקוננים, שדות לא עקביים ומערכים של מערכים הם המקומות שבהם המרת JSON לגיליון אלקטרוני נשברת. ארבע גישות מסודרות לפי זמן לתוצאה, כל אחת עם יתרונות וחסרונות.
הפיכת JSON להצהרות SQL INSERT מסתירה פיצול טבלאות מקוננות, NULL מול שדה חסר, escape ופערים בין דיאלקטים. הצהרות שאפשר להריץ וטבלאות השוואה לכל מלכודת.
יצירת interface מדוגמת JSON היא חצי מהעבודה: שדות אופציונליים, null, איחודים, תאריכים ושלמים גדולים זקוקים למעבר אנושי, וטיפוסים אינם מבצעים אימות בזמן ריצה.
הפקודה הכי מועתקת במדריכים, yq -P input.json > output.yaml, מפיקה בפועל JSON על yq v4. עם yq v4.44.6, PyYAML 6.0.3 ו-js-yaml על דגימה של 2.39 MB נמדדו ארבע קבוצות נתונים שמראות שפורמט הפלט נקבע לפי סיומת הקובץ, ומובאות הדרכים הנכונות להמרת באצ׳ים, גרשיים, הזחה ודיוק שלמים גדולים.
תשעה ניסויים על ממיר אמיתי: אסטרטגיית "מפתחות השורה הראשונה" מאבדת שדות בשקט, null, היעדרות ומחרוזת ריקה הופכים כולם לתאים ריקים, מספר שלם בן 20 ספרות מאבד דיוק כבר ב-JSON.parse, ונקודה במפתח גורמת לשני נתיבים שונים להתנגש באותה עמודה. כיצד נבנית כותרת העמודות, אילו ערכים מתעוותים וכיצד לבחור אסטרטגיה לפי השימוש במורד הזרם.
מבט מעשי על מה שמחולל JSON-to-Java באמת מפיק — מספרים הופכים ל-Double, אובייקטים מקוננים הופכים למחלקות פנימיות סטטיות, ולא נוצרת אפילו הערת Jackson אחת. דיוק כספי, שינוי שמות שדות, מחיקת טיפוסים, שדות לא מוכרים ותאריכים הם חמשת הדברים שעליך להוסיף בעצמך, עם קוד מוכן להעתקה לכל אחד.