JSON הוא פורמט חילופי הנתונים האוניברסלי ל-REST API, לנקודות GraphQL, לשאילתות מסד ולקבצי תצורה. אבל JSON גולמי בהיררכיית מפתח-ערך קשה לסריקה מהירה בסקירת קוד, בכתיבת תיעוד או במצגות. כותבים טכניים, מהנדסים, אנשי DevOps ומנהלי מוצר צריכים להפוך רשומות JSON גולמיות לטבלאות Markdown ברורות ל-README.md ב-GitHub, לדפי Notion, לכרטיסי Jira ולמפרטים טכניים.
הבנת פורמט JSON טבלאי
כדי שהמרה לטבלת Markdown תהיה נקייה, המבנה צריך לייצג רשימת רשומות. הקלט הפשוט ביותר הוא מערך JSON של אובייקטים עם מפתחות אחידים:
[
{ "id": "USR-101", "name": "Alice Smith", "role": "Backend Engineer", "status": "Active" },
{ "id": "USR-102", "name": "Bob Jones", "role": "Frontend Developer", "status": "Pending" },
{ "id": "USR-103", "name": "Carol Danvers", "role": "DevOps Lead", "status": "Active" }
]
במבנה הזה כל מפתח ייחודי (id, name, role, status) הופך לכותרת עמודה, וכל אובייקט הופך לשורה.
טיפול בקלט JSON לא אחיד
תשובות API וייצואים אמיתיים כמעט אף פעם לא אחידים לגמרי. יש שדות חסרים, שדות אופציונליים רק בחלק מהאובייקטים, או מילונים עם מפתחות דינמיים. Utiliome מטפל במקרי הקצה:
- מפתחות לא אחידים בין אובייקטים: אם האובייקט הראשון הוא
{ "a": 1, "b": 2 }והשני{ "b": 2, "c": 3 }, Utiliome מאגד את כל המפתחות הייחודיים (a,b,c) לשורת הכותרת. לשדות חסרים הוא מכניס תאים ריקים כדי לשמור על יישור הרשת. - אובייקטי מילון: כשהקלט הוא מילון מפתח-ערך ולא מערך, Utiliome בונה טבלה דו-עמודתית Key | Value. המפתחות העליונים בעמודת Key, והערכים הקומפקטיים בעמודת Value.
- מערכים סקלריים: מערך של מחרוזות או מספרים הופך לטבלת עמודה אחת Value, שורה לכל פריט.
פירוק אלגוריתם ההמרה ל-Markdown
המרה לטבלת GitHub-Flavored Markdown (GFM) דורשת סדרת טרנספורמציות:
- איסוף מפתחות והסרת כפילויות: הממיר עובר על כל פריט במערך, אוסף מפתחות ייחודיים ושומר על סדר מבני.
- בניית כותרת: רשימת המפתחות מחוברת במפרידי מקל (
|). לדוגמה,| id | name | role | status |. - שורת מפריד: שורה שנייה עם מפרידי טבלת GFM (
|---|). - מיפוי שורות ובריחת תווים: כל אובייקט נבדק מול רשימת המפתחות. תווי Markdown מיוחדים במחרוזות, בעיקר מקל (
|) ומעבר שורה (\n), נמלטים או מומרים (למשל שורה חדשה ל-<br>) כדי לא לשבור גבולות תא.
הממיר האוטומטי של Utiliome חוסך עיצוב ידני של מקלות, שגיאות עיצוב והתאמות כואבות בעורך טקסט.
לזרימת jq מתוסרטת, ראו הפיכת תשובות API ב-JSON לטבלאות Markdown עם jq.