המרת JSON ל-CSV

פועל על המכשיר שלכם · הקובץ לא עוזב את המכשיר.

גררו קובץ ‎.json או הדביקו JSON ישירות מתשובת API וקבלו CSV שנפתח באקסל, ב-Google Sheets או בכל מסך ייבוא. רשימה ברמה העליונה נותנת שורה לכל פריט; אחרת נבחרת רשימת הרשומות הארוכה ביותר במסמך, כך ש-{"results": [...], "count": 2} נותן שורה לכל תוצאה; אובייקט שאין בו רשימה הופך לשורה אחת.

הכללים קבועים כדי שהתוצאה תהיה צפויה: אובייקטים מקוננים הופכים לעמודות מופרדות בנקודה (address.city), רשימה של ערכים פשוטים מחוברת בנקודה-פסיק בתא אחד, ורשימה של אובייקטים בתוך רשומה מקבלת עמודות ממוספרות (items.0.name). שורת הכותרת היא איחוד כל המפתחות שנמצאו, לפי סדר הופעתם הראשון, ולכן רשומות עם שדות חסרים פשוט משאירות תא ריק.

ה-CSV נכתב לפי RFC 4180 – שדות עם פסיקים, מירכאות או מעברי שורה מצוטטים כראוי – ב-UTF-8 עם BOM אופציונלי כדי שאקסל יציג נכון כל כתב, ניקוד וסמלים. לפני תא שמתחיל ב-=, +, - או @ נוסף גרש, כדי שגיליון אלקטרוני יציג אותו כטקסט ולא יריץ אותו כנוסחה. רואים את 200 השורות הראשונות לפני ההורדה, ושום דבר לא יוצא מהמכשיר.

איך המרת JSON ל-CSV

  1. גררו קובץ JSON, או הדביקו את ה-JSON בתיבה.
  2. בחרו את מפריד העמודות לפלט (פסיק כברירת מחדל) והאם להוסיף BOM לאקסל.
  3. לחצו «המרה ל-CSV» ובדקו את התצוגה המקדימה של השורות הראשונות.
  4. הורידו את ה-.csv.

פורמטים נתמכים ומגבלות

קלט
JSON (.json) – קובץ או טקסט מודבק, UTF-8
פלט
CSV, RFC 4180, UTF-8, סיומי שורה CRLF, BOM אופציונלי
קינון
אובייקטים ← עמודות עם נקודה; רשימות ערכים ← מחוברות ב-;
מפריד
פסיק, נקודה-פסיק, טאב או קו אנכי
איפה זה רץ
בדפדפן – בלי העלאה

לא מיועד ל: אובייקט יחיד מקונן עמוק בלי רשימה בתוכו – הוא מומר, אבל כשורה אחת רחבה מאוד ולא כטבלה.

איזו רשימה הופכת לשורות

רשימה ברמה העליונה היא השורות. אחרת הכלי מחפש במסמך, עד שמונה רמות לעומק, את רשימת האובייקטים הארוכה ביותר. כך גם {"response": {"data": {"items": [...]}}} וגם {"results": [...], "count": 2, "next": null} נותנים שורה לכל פריט, והשורה שמתחת לתוצאה מציינת באיזו רשימה נעשה שימוש, למשל results. ערכים שלצד הרשימה, כמו count ו-next, אינם חלק מאף רשומה ומושארים בחוץ.

מבין שתי רשימות באורך שווה, זו שקרובה יותר לראש המסמך מנצחת. כדי לקבל רשימה קצרה יותר, העתיקו אותה מה-[ שלה ועד ה-] והדביקו רק אותה. מסמך בלי רשימת אובייקטים הופך לשורה אחת, ועוטפים עם מפתח יחיד מדולגים, כך ש-{"order": {"id": 7, "total": 12}} נותן את העמודות id ו-total.

איך ערכים נכתבים לתאים

טקסט מועתק בדיוק, כולל תאריכים, שנשארים בצורה שבה הם כתובים ב-JSON, כמו 2024-01-05T10:00:00Z. true ו-false נכתבים כמילים. null, רשימה ריקה ואובייקט ריק הופכים כולם לתא ריק, כך שב-CSV הם נראים בדיוק כמו שדה שהיה חסר.

מספר נכתב בדיוק כפי שהוא ב-JSON: 1.0 נשאר 1.0, ‏1e21 נשאר 1e21, ומזהה כמו 12345678901234567890 שומר על כל ספרה גם בלי מירכאות. קורא JSON רגיל היה הופך את המזהה הזה ל-12345678901234567000.

רשימות בתוך רשימות, ומפתחות שכבר מכילים נקודה

רשימה של רשימות נפתחת רמה אחת: "m": [[1, 2], [3]] נותן עמודה m.0 שמכילה 1;2 ועמודה m.1 שמכילה 3. רשימה שמערבבת אובייקטים וערכים פשוטים ממספרת כל פריט, כך ש-"x": [{"z": 1}, 2] נותן x.0.z ו-x.1.

שמות העמודות נוצרים מחיבור מפתחות בנקודות, ולכן מפתח שכבר מכיל נקודה יכול להתנגש במפתח מקונן: {"a.b": 1, "a": {"b": 2}} היה יוצר a.b פעמיים. השני מקבל סיומת, כך שהעמודות הן a.b ו-a.b_2 ושני הערכים נשמרים.

בחירת המפריד, ותאים שמתחילים ב-=

פסיק הוא הבחירה הרגילה. נקודה-פסיק מתאימה לגיליון אלקטרוני שמוגדר לשפה שכותבת שברים עשרוניים עם פסיק, שבו קובץ מופרד בפסיקים נפתח לעיתים קרובות בעמודה אחת. טאב וקו אנכי מיועדים למערכות שמבקשות אותם. לא משנה מה המפריד, הקובץ נקרא ‎.csv‎.

תא שמתחיל ב-=, ‏+, ‏- או @ הוא נוסחה מבחינת גיליון אלקטרוני, שיריץ אותה בפתיחת הקובץ. תא כזה מקבל גרש לפניו, הסימן שגיליונות אלקטרוניים עצמם משתמשים בו כדי לומר „זה טקסט“, כך ש-=1+1 נכתב ‎'=1+1‎. מספרים רגילים כמו ‎-5‎ או ‎+3.5‎ נשארים כמו שהם.

שאלות נפוצות

האם הקובץ שלי נשלח לשרת?
לא. ההמרה מתבצעת כולה בדפדפן, בכוח המכשיר שלכם, והקובץ לא יוצא מהמחשב או מהטלפון. אחרי שהשתמשתם בכלי פעם אחת, הוא ממשיך לעבוד גם בלי אינטרנט (כלי הווידאו, זיהוי הטקסט והסרת הרקע מורידים את המנוע שלהם מהאתר הזה בפעם הראשונה).
מה קורה לאובייקטים ולמערכים מקוננים?
אובייקט מקונן משוטח לעמודות עם נקודה: {"address":{"city":"חיפה"}} הופך לעמודה בשם address.city. רשימה של ערכים פשוטים ("tags": ["a","b"]) נכתבת כ-a;b בתא אחד. רשימה של אובייקטים בתוך רשומה מקבלת עמודות ממוספרות כמו items.0.name, items.1.name.
ה-JSON שלי הוא אובייקט, לא רשימה – מה אקבל?
רשימת הרשומות הארוכה ביותר בכל מקום בו הופכת לשורות – {"results": [...], "count": 2, "next": null} נותן שורה לכל תוצאה – ושורת התוצאה מציינת באיזו רשימה נעשה שימוש. ערכים שלצד הרשימה אינם חלק מאף רשומה ומושארים בחוץ. אובייקט שאין בו רשימה נכתב כשורה אחת עם עמודה לכל מפתח.
למה אקסל מציג תווים מוזרים, ואיך מתקנים?
אקסל מנחש את הקידוד אלא אם הקובץ מתחיל ב-BOM. המתג „הוספת BOM עבור Excel“ פועל כברירת מחדל ומוסיף את הסימון בן שלושת הבייטים; כבו אותו לכלים שדורשים UTF-8 נקי.

כלים קשורים

עוד בגיליונות ונתונים

עמוד זה בשפות אחרות: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · فارسی · اردو · Bahasa Indonesia · বাংলা