Command Palette

Search for a command to run...

JSON ל-CSV: הפוך תגובת API לגיליון אלקטרוני שאנשים יכולים לפתוח

JSON ל-CSV: הפוך תגובת API לגיליון אלקטרוני שאנשים יכולים לפתוח

T
Toolz Team
|Aug 23, 2026|13 קריאה דקות

חלק מאוסף כלי נתונים

חצי מהעבודה שלי על כל מוצר SaaS היא להוציא נתונים מהמערכת ולידיים של מישהו שלא כותב קוד מייסד רוצה את החודש's הרשמות בגיליון אלקטרוני מוביל תמיכה רוצה למיין כרטיסים באקסל רואה חשבון רוצה את ההזמנות בתור א .csv הם יכולים להסתובב הנתונים חיים כJSON, כי זה מה שה API מחזיר, ובכל פעם שהמשימה זהה: להפוך את מערך האובייקטים הזה לעמודות ושורות שאדם יכול לפתוח נמאס לי לכתוב סקריפטים זרוקים בשביל זה, וזו בדיוק הסיבה שהToolz ממיר JSON ל-CSV קיים המדריך הזה הוא איך אני חושב על ההמרה ההיא, כולל החלקים שמכשילים אנשים.

TL;DR: ממיר JSON ל-CSV לוקח מערך של אובייקטים וכותב אותו כשורות מופרדות בפסיקים, עמודה אחת לכל מאפיין, כך שגיליון אלקטרוני יכול לפתוח אותו החלקים הקשים הם רשומות עם שדות שונים, אובייקטים מקוננים וערכים המכילים פסיקים ממיר טוב בונה את הכותרת מהאיחוד של כל המפתחות, יכול לשטח אובייקטים מקוננים לעמודות סימון נקודות, ובורח משדות לכל RFC 4180 הכלי Toolz עושה את כל שלושת צד הלקוח, ומאפשר לך לבחור את הסיומות של קו המפריד וה-CRLF כך שהקובץ ייפתח בצורה נקייה ב-Excel.

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

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

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

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

איך הוא מטפל בחפצים עם שדות שונים?

זה הדבר הראשון ששובר ממירים נאיביים, וכדאי להבין כי לייצור JSON כמעט אף פעם אין אובייקטים אחידים נניח שלמערך שלך יש אובייקט אחד עם id, name, ו email, והבא עם id, name, ו phone. אילו עמודות צריכות להיות ל-CSV?

התשובה הנכונה היא איחוד של כל מפתח על פני כל האובייקטים, נשמר בסדר שבו כל מפתח מופיע לראשונה אז הכותרת הופכת id, name, email, phone, וכל אובייקט שחסר לו אחד מהמפתחות האלה פשוט מקבל תא ריק בעמודה הזו. שום דבר לא נשמט, והטבלה נשארת מלבנית. ממיר עצלן שקורא רק את המפתחות של האובייקט הראשון יאבד בשקט את phone עמודה לחלוטין, לוקח כל מספר טלפון עם זה ממיר Toolz סורק את כל השורות כדי לבנות את הכותרת, כך רשומות לא אחידות עדיין מסתדרות לטבלה נקייה, מלאה התנהגות אחת זו היא ההבדל בין ייצוא שאתה יכול לסמוך עליו לבין אחד בשקט משמיט נתונים אף אחד לא שם לב עד שיהיה מאוחר מדי.

מה לגבי אובייקטים ומערכים מקוננים?

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

עבור אובייקטים מקוננים יש לך שתי אפשרויות סבירות, והכלי תומך בשניהם. עם השטחה, אובייקט מקונן מורחב לעמודות סימון נקודות, אז { "address": { "city": "Paris", "zip": "75001" } } הופך ל address.city טור ו-an address.zip טור. זה מה שאתה רוצה כשהשדות המקוננים הם נתונים אמיתיים שאדם יקרא וימיין. עם השטחה, כל האובייקט המקונן כתוב כמחרוזת JSON קומפקטית בתוך תא בודד, וזה טוב יותר כאשר המבנה אטום ואתה רק צריך לשמר אותו מילה במילה.

מערכים מקבלים בחירה משלהם, כי אין דרך אחת נכונה לסחוט רשימה לתוך תא אחד אתה יכול לאחסן את המערך כמו JSON, שמירה ["a","b"] שלם כך שהוא מסתובב בצורה מושלמת, או שאתה יכול לחבר את האלמנטים עם מפריד כדי לקבל את הקריא יותר לאדם a; b. אני משתמש ב-JSON כאשר הקובץ ייקרא בחזרה על ידי תוכנית ופורמט ההצטרפות כאשר אדם הוא הקהל והקריאות מנצחת הטבלה שלהלן מסכמת את ההחלטות.

צורת קלט משטחים ON לשטח
{"user":{"name":"Ada"}} טור user.name = Ada טור user = {"name":"Ada"}
{"tags":["x","y"]} (מערכים כ-JSON) טור tags = ["x","y"] טור tags = ["x","y"]
{"tags":["x","y"]} (מערכים הצטרפו) טור tags = x; y טור tags = x; y
אובייקט חסר מפתח תא ריק בעמודה ההיא תא ריק בעמודה ההיא

למה צריך לברוח פסיקים וציטוטים?

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

RFC 4180, הדבר הקרוב ביותר שיש ל-CSV לתקן, עונה על כך במדויק: כל שדה המכיל את המפריד, ציטוט כפול או הפסקת שורה חייב להיות עטוף במרכאות כפולות, וכל ציטוט כפול בתוך השדה הזה חייב להיות כפול אז הערך Baker, Smith & Co. כתוב כ "Baker, Smith & Co.", ו She said "hi" הופך "She said ""hi""". ממיר Toolz מחיל את הכללים הללו על כל תא באופן אוטומטי, וזו הסיבה שכתובת, מחיר עם מפריד אלפים או הערה בטקסט חופשי שורדים את הנסיעה לגיליון אלקטרוני כשדה בודד ושלם במקום להתנפץ לעמודות נוספות.

כיצד אוכל לגרום לקובץ להיפתח בצורה נקייה באקסל?

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

Excel ב - Windows מצפה שכל שורה תסתיים עם החזרת גררה בתוספת הזנת שורה, צמד ה - CRLF אם תמסור לו קובץ עם סיומות קו LF בסגנון יוניקס, הוא יכול לקרוא לא נכון היכן שורות נשברות, במיוחד כאשר שדה מצוטט מכיל שורה חדשה משלו הממיר מאפשר לך לבחור LF או CRLF, אז בחר CRLF כאשר הקהל הוא Excel ב - Windows ו - LF עבור רוב הכלים האחרים ועבור Google Sheets, אשר מרוצה מכל אחד מהם, אתה יכול גם לבחור את המפריד: פסיק הוא ברירת המחדל, אך נקודה-פסיק נפוצה באזורים אירופיים שבהם הפסיק הוא המפריד העשרוני, וכרטיסייה או צינור שימושיים כאשר הנתונים שלך עצמם מלאים בפסיקים התאמת המפריד וסיום השורה ליעד היא בחירה של חמש שניות ששומרת כרטיס תמיכה מאוחר יותר.

האם זה בטוח להמיר JSON רגיש באינטרנט?

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

זה לא פרט מינורי עבור JSON ספציפית, כי JSON הוא מה תגובות API ומערכות פנימיות לדבר המערך שאתה ממיר עשוי להחזיק רשומות משתמש, נתוני הזמנה, אסימוני גישה, או כל דבר אחר backend שלך חוזר ממיר כי ספינות המטען שלך לשרת מרוחק הופך תגובה פרטית לתוך מישהו אחר & #39;s log line.Doing העבודה בצד הלקוח אומר הנתונים נשארים בדיוק איפה זה התחיל זה ברירת המחדל עבור כל כלי על Toolz.dev, ואם אתה רוצה את המקרה המלא יותר למה ארכיטקטורה זו חשובה, אני הניח את זה ב מדריך פרטיות נתונים לכלים מקוונים.

איפה זה נכנס בצינור אמיתי?

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

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

שאלות נפוצות

איך אני ממיר את JSON ל-CSV? פתח את ממיר JSON ל-CSV, הדבק מערך JSON של אובייקטים בתיבת הקלט, ולחץ על המר. מקשי האובייקט הופכים לשורת הכותרת וכל אובייקט הופך לשורת נתונים, ואז תוכל להעתיק את ה-CSV או להוריד אותו בתור a .csv קובץ לפתיחה ב - Excel או ב - Google Sheets כל העיבוד מתרחש בדפדפן שלך, כך ששום דבר לא מועלה.

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

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

כיצד מטפלים באובייקטים ומערכים מקוננים? עם השטחה, אובייקט מקונן מתרחב לעמודות סימון נקודות כמו address.city; עם זה כבוי, האובייקט נכתב כמחרוזת JSON בתא אחד ניתן לאחסן מערכים כ-JSON כדי לשמר אותם במדויק, או לחבר אותם עם מפריד עבור עמודה קריא יותר. אתה בוחר לפי המרה.

מדוע עלי להשתמש בסיומות שורות CRLF עבור Excel? Microsoft Excel ב - Windows מצפה להחזרת גררה בתוספת הזנת שורה בסוף כל שורה בחירה ב - CRLF מונעת מיזוג שורות או קריאה שגויה בעת פתיחת הקובץ. עבור רוב הכלים האחרים ועבור Google Sheets, LF עובד מצוין.

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

האם זה בטוח להמיר JSON רגיש? כן. ההמרה פועלת כולה ב-JavaScript בדפדפן שלך, אף בקשת רשת לא נושאת את הנתונים שלך, שום דבר לא נרשם או מאוחסן, והיא פועלת במצב לא מקוון לאחר הטעינה. JSON המכיל מפתחות API, רשומות משתמש או מזהים פנימיים לעולם לא עוזב את המחשב שלך.

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

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!