דלג לתוכן

ממיר CSV ל-JSON - כלי המרת קבצים מקוון חינמי

ממיר CSV ל-JSON וגם JSON ל-CSV ללא עלות. כל העיבוד מתבצע בדפדפן, כך שהקובץ אינו עוזב את המכשיר ואינו מגיע לשרת חיצוני. כולל תצוגה מקדימה והורדה מיידית.

ממיר קבצי CSV/JSON

המר בין פורמטים CSV ו-JSON בקלות. העלה את הקובץ שלך, הצג תצוגה מקדימה של הנתונים והורד את התוצאה המומרת.

ממיר CSV ל-JSON

ממיר JSON ל-CSV

מחשבון טעינה...
📚

תיעוד

מהו ממיר מ־CSV ל־JSON?

ממיר מ־CSV ל־JSON הוא כלי שמשנה נתונים מתבנית CSV (ערכים המופרדים בפסיקים) לתבנית JSON (סימון אובייקטים של JavaScript), או בכיוון ההפוך. הממיר פועל כולו בתוך דפדפן האינטרנט. הוא לעולם אינו שולח את הקובץ שהועלה לשרת, ולכן הנתונים נשארים במכשיר של המשתמש.

CSV היא תבנית טקסט פשוטה המשמשת לאחסון טבלאות, כגון גיליונות אלקטרוניים שיוצאו מ־Excel או מ־Google Sheets. JSON היא תבנית טקסט הבנויה מצמדי מפתח־ערך, ומשמשת רבות להעברת נתונים בין יישומי אינטרנט לבין ממשקי API. מכיוון ששתי התבניות מארגנות נתונים בדרכים שונות, ההמרה ביניהן דורשת מערכת מוגדרת של כללים, המתוארת להלן.

כיצד להמיר CSV ל־JSON

  1. לחצו על "Upload CSV File" ובחרו במכשיר קובץ .csv.
  2. הכלי מציג תצוגה מקדימה של תוכן הקובץ הגולמי.
  3. לחצו על "Convert to JSON". הכלי קורא את השורה הראשונה ככותרות עמודות והופך כל שורה אחרת לאובייקט JSON אחד.
  4. התוצאה מופיעה בתצוגה המקדימה של הפלט, כשהיא מעוצבת באמצעות הזחה.
  5. לחצו על "Download JSON" כדי לשמור את התוצאה כקובץ .json, או על "Copy JSON" כדי להעתיק את הטקסט.

כיצד להמיר JSON ל־CSV

  1. לחצו על "Upload JSON File" ובחרו קובץ .json. הקובץ חייב להכיל מערך JSON של אובייקטים, למשל [{"Name":"Ann"},{"Name":"Bo"}].
  2. הכלי מציג תצוגה מקדימה של טקסט ה־JSON הגולמי.
  3. לחצו על "Convert to CSV". הכלי אוסף כל מפתח שמופיע בכל האובייקטים והופך כל אחד מהם לעמודה.
  4. התוצאה מופיעה בתצוגה המקדימה של הפלט כטקסט CSV.
  5. לחצו על "Download CSV" כדי לשמור את התוצאה כקובץ .csv, או על "Copy CSV" כדי להעתיק את הטקסט.

אין מגבלות העלאה שנאכפות על ידי שרת, מכיוון שאף אחד מהנתונים אינו יוצא מהדפדפן. קובץ גדול מאוד עדיין עלול להאט את לשונית הדפדפן, משום שהקובץ כולו נשמר בזיכרון במהלך ההמרה.

כללי ההמרה מ־CSV ל־JSON

הממיר קורא את השורה הראשונה בקובץ כשמות העמודות. כל שורה שלאחר מכן הופכת לאובייקט JSON אחד, כששמות העמודות משמשים כמפתחות. שורה המכילה יותר ערכים ממספר הכותרות מקבלת מפתחות נוספים, הקרויים לפי המיקום המוחלט שלהם בשורה; לכן, עם 3 כותרות, הערך הרביעי יקבל את המפתח field_4, החמישי field_5 וכן הלאה, כך ששום נתון אינו מושמט. שורה המכילה פחות ערכים מקבלת מחרוזות ריקות עבור המפתחות החסרים. אם לשתי כותרות יש אותו שם, השנייה מקבלת סיומת, כך ש־a, a הופך למפתחות a ו־a_2.

הממיר פועל לפי כללי CSV שהוגדרו ב־RFC 4180, התקן הטכני של התבנית. פסיק בתוך שדה נחשב לערך בתוך אותו שדה, ולא למפריד עמודות, רק אם השדה מוקף במרכאות כפולות, למשל "Smith, John". מעבר שורה בתוך מרכאות נשמר כחלק מהערך, ולא נחשב לשורה חדשה. שתי מרכאות כפולות בתוך שדה המצוי במרכאות מייצגות תו מרכאה מילולי אחד.

רק פסיקים מזוהים כמפרידי עמודות; הכלי אינו מזהה או תומך בנקודה־פסיק, בטאבים או במפרידים אחרים.

כל ערך נבדק ומומר לסוג נתונים:

  • ערך הכתוב כמספר פשוט, כגון 42 או -3.5, הופך למספר JSON.
  • הטקסט true או false, בכל שילוב של אותיות, הופך לערך בוליאני ב־JSON.
  • כל דבר אחר נשאר כמחרוזת JSON, כולל תאים ריקים, שהופכים למחרוזות ריקות.
  • מספר המתחיל באפס, כגון 00512, נשאר מחרוזת, משום שלאפס המוביל יש לעיתים קרובות משמעות, כמו במיקוד או במספר מזהה.
  • מספר מתקבל רק אם כתיבתו מחדש תניב בדיוק את אותו טקסט. מספרים שלמים ארוכים מעל 9,007,199,254,740,991, המספר השלם הגדול ביותר שמספר JavaScript יכול להחזיק בדיוק, נכשלים בדרך כלל בבדיקה זו ונשארים מחרוזות, כך שאף ספרה אינה הולכת לאיבוד.
  • ערך שהקובץ כבר הקיף במרכאות נשמר תמיד כמחרוזת, גם אם הוא נראה כמספר, מכיוון שהמרכאות נחשבות לסימון של המחבר שהערך הוא טקסט.

שורות ריקות בקובץ מדולגות ואינן יוצרות אובייקטים ריקים.

כללי ההמרה מ־JSON ל־CSV

הממיר בוחן כל אובייקט במערך ואוסף את קבוצת המפתחות המלאה המשמשת בכולם. המפתחות האלה הופכים לכותרות עמודות ה־CSV, לפי סדר הופעתם הראשונה. אם באובייקט אחד חסר מפתח שמופיע באובייקט אחר, התא שלו נשאר ריק במקום לגרום לשגיאה.

המרה מ־JSON ל־CSV אינה משטחת אובייקטים מקוננים לעמודות נפרדות. ערך שהוא בעצמו אובייקט או מערך נכתב מחדש כטקסט JSON בתוך תא יחיד, כך ש־{"b": 1} הופך לתא {"b":1}, ו־[1, 2] הופך לתא [1,2]. שום דבר אינו הולך לאיבוד, אך החלק המקונן נשאר בעמודה אחת במקום להתפצל. אם כל חלק זקוק לעמודה משלו, יש לשטח תחילה את ה־JSON המקונן באופן ידני.

ערך null, וכן מפתח שקיים באובייקט אחד אך חסר באובייקט אחר, יוצרים תא ריק.

ערך תא המכיל פסיק, סימן מרכאה או מעבר שורה מוקף במרכאות כפולות בפלט, וכל סימן מרכאה שבתוכו מוכפל, בהתאם לכלל המילוט של CSV שתואר לעיל.

קלט ה־JSON חייב להיות מערך, וכל פריט בו חייב להיות אובייקט. מספר, מחרוזת, null או מערך מקונן במקום אובייקט יוצרים את השגיאה "JSON חייב להיות מערך של אובייקטים". מערך ללא פריטים כלל יוצר את השגיאה "מערך ה־JSON ריק. יש להוסיף לפחות אובייקט אחד להמרה." קובץ שהועלה ללא תוכן כלל יוצר את השגיאה "הקובץ שהועלה ריק."

דוגמה פתורה

קובץ CSV התחלתי:

1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4

המרתו ל־JSON מפיקה:

1[
2  {
3    "Name": "Ann Lee",
4    "Age": 29,
5    "Member": true
6  },
7  {
8    "Name": "Bo, Jr.",
9    "Age": 7,
10    "Member": false
11  }
12]
13

שימו לב ש־"Bo, Jr." שמר על הפסיק שלו משום שהשדה היה מוקף במרכאות בקובץ המקור, ואילו Age ו־Member הפכו למספר ולערך בוליאני.

המרת אותו JSON בחזרה ל־CSV, עם שורה נוספת שבה Age חסר, מפיקה:

1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4Cy Tan,,true
5

הערך החסר Age הופך לתא ריק, והפסיק ב־"Bo, Jr." גורם לשדה להיות מוקף שוב במרכאות בעת הכתיבה.

שימושים נפוצים

  • ניתוח נתונים: הפיכת ייצוא CSV מגיליון אלקטרוני או מכלי אנליטיקה ל־JSON, כדי שניתן יהיה לעבד אותו באמצעות JavaScript, ולאחר מכן המרת התוצאות בחזרה ל־CSV עבור דוח.
  • בדיקת API: מפתח שבונה API המקבל העלאות CSV יכול להמיר קבצים לדוגמה ל־JSON, כדי לבדוק שמנתח הנתונים מפיק את האובייקטים הצפויים.
  • העברת נתונים: העברת רשומות ממערכת שמייצאת CSV למערכת שמקבלת JSON בלבד, או בכיוון ההפוך.
  • בדיקה מהירה: הפיכת קובץ JSON ל־CSV דמוי טבלה כדי לקרוא אותו ביתר קלות, או בכיוון ההפוך.

ספריות תכנות מציעות את אותה המרה עבור משימות גדולות יותר או חוזרות, כגון המודולים csv ו־json ב־Python, או pandas. כלי שורת פקודה כגון csvkit ו־jq מטפלים בהמרה ובסינון מהמסוף. אפשרויות אלה מתאימות לעיבוד באצווה; כלי הדפדפן מתאים לקובץ חד־פעמי בלי להתקין דבר.

שאלות נפוצות

האם הקובץ שהועלה נשלח לשרת? לא. ההמרה מתבצעת ב־JavaScript בתוך לשונית הדפדפן. הקובץ נקרא מהמכשיר המקומי ולעולם אינו מועבר.

האם הממיר תומך במפרידים שאינם פסיק, כגון נקודה־פסיק או טאב? לא. הגרסה הנוכחית קוראת ערכים המופרדים בפסיקים בלבד. קובץ המשתמש במפריד אחר צריך לעבור תחילה המרה לתבנית המופרדת בפסיקים, למשל באמצעות החלפת המפריד בעורך טקסט.

מדוע מספר כמו 00512 נשאר מחרוזת טקסט בפלט ה־JSON? לאפסים מובילים יש בדרך כלל משמעות, כמו במיקוד, ולכן הממיר שומר את הערך כמחרוזת במקום להפוך אותו למספר 512, שהיה משמיט את האפס.

מה קורה אם אני ממיר JSON המכיל אובייקטים מקוננים? האובייקט המקונן נכתב כטקסט JSON בתא יחיד, למשל {"b":1}. הנתונים נשמרים, אך אינם מתפצלים לעמודות נפרדות. יש לשטח תחילה את הנתונים המקוננים אם כל שדה זקוק לעמודה משלו.

מה אם ה־JSON שלי אינו מערך של אובייקטים? הכלי מציג שגיאה ואינו ממיר דבר. הקלט חייב להיות מערך JSON שכל פריט בו הוא אובייקט, למשל [{"a":1},{"a":2}].

האם השורה הראשונה בקובץ CSV חייבת תמיד להיות שורת כותרות? כן. הממיר תמיד מתייחס לשורה הראשונה כשמות העמודות. קובץ ללא שורת כותרות יגרום לכך ששורת הנתונים הראשונה תפורש בטעות ככותרות.

מקורות

  1. Shafranovich, Y. "Common Format and MIME Type for Comma-Separated Values (CSV) Files." RFC 4180, IETF, אוקטובר 2005. https://www.rfc-editor.org/rfc/rfc4180
  2. Bray, T., עורך. "The JavaScript Object Notation (JSON) Data Interchange Format." RFC 8259, IETF, דצמבר 2017. https://www.rfc-editor.org/rfc/rfc8259
  3. "Working with JSON." MDN Web Docs, Mozilla. https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON