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

שורה תחתונה: פירוס, עיצוב, השוואה ושאילתות פועלים כולם בדפדפן שלכם וממשיכים לעבוד גם בלי אינטרנט; נקו את היסטוריית localStorage אחרי טיפול בנתונים רגישים; ומעל 10 MB עברו לכלי זרימה בשורת פקודה במקום להדביק את הקובץ בדפדפן.
לפני שמדביקים מטען רגיש בכלי מקוון, חשוב לדעת לאן הוא הולך. המאמר הזה עוסק רק בהתנהגות הריצה של הכלי, לא בתחביר.
1. נתונים ופרטיות
האם מעצב ה-JSON המקוון מעלה את הנתונים שלי לשרת?
לא. פירוס, עיצוב, מזעור, השוואה ושאילתות מתרחשים כולם בדפדפן, והעמוד לעולם לא שולח שום דבר שאתם מדביקים לשרת יישום.
אתם לא צריכים לקרוא הצהרת פרטיות כדי לדעת אם כלי מקוון מעלה נתונים; לוח הרשת של הדפדפן מספיק:
- פתחו את כלי המפתחים, עברו ללשונית Network והפעילו שמירת לוג;
- הדביקו קצת JSON ולחצו על "Format";
- עקבו אחרי האם מופיעה בקשה חדשה של XHR או fetch, והאם גוף הבקשה מכיל את התוכן שלכם.
בכלי שהוא באמת מקומי, הצעד הזה מציג רק בקשות של נכסים סטטיים. לעומת זאת, אם פעולת עיצוב אחת מפיקה POST /api/format
שגופו הוא הטקסט המקורי שלכם, אז הנתונים כבר עזבו את הדפדפן לא משנה מה העמוד טוען.
כל כלי באתר הזה הוא מימוש חזיתי טהור, ופלט הבנייה אינו מכיל API של שרת. אחרי מעבר למצב לא מקוון, רענון שמגיע מהמטמון עדיין עובד, וזו גם הדרך הישירה ביותר לדעת אם משהו הוא "מקומי לחלוטין".
האם אפשר להשתמש בו גם בלי אינטרנט?
כן, בתנאי שהעמוד נטען פעם אחת.
הנכסים של האתר יורדים למטמון הדפדפן בביקור הראשון, כך שגם בלי רשת לאחר מכן, עיצוב, מזעור, המרת JSON5 ושאילתות JSONPath ממשיכים לעבוד. רק תכונות שתלויות ברשת נכשלות, כמו בדיקת גרסה חדשה או הורדת מתקין שולחני.
בדיקת המצב הלא מקוון היא גם דרך טובה לוודא ש"הנתונים לא עוזבים": אם הכל נשבר ברגע שמנתקים, כל פעולה דיברה עם שרת.
האם משהו נשמר מקומית? איך מנקים אותו?
כן, אבל רק ב-localStorage של הדפדפן הנוכחי, ורק היסטוריה והגדרות ממשק.
- היסטוריה: 100 הרשומות האחרונות שעובדו, בסדר כרונולוגי הפוך, ומשמשות לשליפת הנתונים שהודבקו קודם;
- הגדרות ממשק: ערכת נושא, שפה, העדפות הזחה וכדומה;
- לא נשמר: הקובץ עצמו, רשומות העלאה, או משהו שנושא זהות.
יש שלוש דרכים לנקות, מהצרה לרחבה:
| שיטה | היקף | מתי להשתמש |
|---|---|---|
| "Clear history" בעמוד ההיסטוריה | מוחק היסטוריה בלבד, שומר הגדרות | אחרי טיפול בנתונים רגישים |
הרצת localStorage.clear() בכלי המפתחים |
כל הנתונים המקומיים של האתר הזה | אבחון הגדרות חריגות |
| "Clear browsing data" של הדפדפן עבור האתר הזה | קוקיז, מטמון ואחסון יחד | לפני שימוש במחשב משותף |
כשמטפלים בנתוני פרודקשן במחשב משותף, נקו את ההיסטוריה כשמסיימים במקום רק לסגור את הלשונית — localStorage לא נעלם כשהלשונית נסגרת.
למה תווים בסינית הפכו ל-\u4e2d\u6587?
כי תכונת "escape" ממירה תווים שאינם ASCII לרצפי קידוד Unicode. זו התנהגות מכוונת, לא שיבוש תווים.
\u4e2d הוא נקודת הקוד של התו 中 (U+4E2D). שתי הצורות זהות מבחינה סמנטית ב-JSON ומתפרסות לאותה מחרוזת:
{
"escaped": "\u4e2d\u6587",
"plain": "中文"
}
מתי צריך קידוד? כשמטמיעים JSON במערכת ישנה שמקבלת רק ASCII, כשרושמים אותו בכותרת HTTP, או כשמקננים אותו בתוך מחרוזת אחרת. מתי לא צריך? רוב ההובלה ב-API ואחסון הקבצים לא צריכים את זה; אחסון סינית ישירות כ-UTF-8 חוסך בייטים — תו סיני אחד הוא 3 בייטים, ו-6 בייטים לאחר קידוד.
אם אתם רואים שסינית הפכה ל-\u4e2d, בדקו קודם אם לחצתם על כפתור "Escape" במקום לחשוד שהקידוד שבור.
2. קבצים וגודל
איזה גודל קובץ נתמך?
אין מגבלה קשה בצד הדפדפן; המגבלות האמיתיות מגיעות משלושה מקומות:
| שלב | צוואר בקבוק משוער | תסמין |
|---|---|---|
| הדבקה בתיבת טקסט | 1–5 MB | הקלט מגיב באיחור אחרי ההדבקה, השהיה בסמן |
JSON.parse |
50–100 MB | ה-thread הראשי נחסם לשניות, העמוד לא מגיב |
| רינדור העץ | 10k–20k צמתים | פריימים נשמטים בזמן הרחבה, גלילה קופאת |
במילים אחרות, קובץ של עשרות MB "יכול להתפרס" אבל "לא שמיש". כשיש באמת צורך לעבד נתונים כאלה, הצעד הנכון אינו למצוא כלי מקוון חזק יותר, אלא לעבור לזרימה (ראו שאלות נפוצות על ביצועים ואבטחה).
כלל אצבע: מתחת ל-2 MB כלי מקוון נשאר חלק; 2–10 MB פירושו להשלים עם השהיה או שתיים; מעל 10 MB, עדיף סקריפט מקומי.
הדפדפן קופא אחרי ההדבקה. מה עכשיו?
אל תרעננו קודם — רענון מאבד את התוכן ואתם צריכים להדביק שוב. הצילו אותו בסדר הזה:
- המתינו 10–30 שניות. ברוב המקרים ה-thread הראשי מפרס או מרנדר ויתאושש מעצמו;
- ברגע שהוא מתאושש, עברו מיד לתצוגת "Minify" או כווצו את העץ כדי לצמצם צמתי DOM;
- העתיקו את התוכן לקובץ מקומי ועברו לשורת הפקודה:
# Look at the structure of the first 100 lines only, to avoid loading everything
head -c 200000 data.json | jq . | head -n 100
# Count entries with a streaming tool, without loading them into memory
jq -c '.items[]' data.json | wc -l
בפעם הבאה שנתקלים בקובץ גדול, הריצו קודם wc -c כדי לראות את מספר הבייטים, ואז החליטו אם להדביק אותו בדפדפן.
למה העיצוב לא משתנה אחרי ההדבקה?
שלוש סיבות נפוצות, לפי תדירות:
- הקלט כבר ממוזער ואין בו שגיאות תחביר: עיצוב מתאים רק את ההזחה, כך שאם המקור באמת בן שתי שורות, הוא יישאר שתי שורות לאחר מכן — שורות חדשות בתוך מחרוזות לא מורחבות;
- התוכן אינו JSON: למשל הדבקתם אובייקט ליטרלי של JavaScript (מפתחות בלי גרשיים, גרשיים בודדים), והמפרס מדווח על שגיאה במקום לעצב;
- לחצתם על הכפתור הלא נכון: מזעור ועיצוב הולכים בכיוונים מנוגדים, ומזעור מסיר את כל ההזחה.
איך לדעת: הביטו במספר התווים בפינה הימנית העליונה של אזור הפלט. אחרי עיצוב המספר אמור לגדול (הזחה ושורות חדשות נוספות); אם דווקא קטן, הרצתם מזעור.
3. קלט ופלט
איך מייצאים את התוצאה לקובץ?
שלוש דרכים, לפי מהימנות:
| שיטה | פעולה | מתי להשתמש |
|---|---|---|
| כפתור הורדה | לחיצה על "Download" מפיקה קובץ .json |
תוצאות גדולות שצריך לארכב |
| העתקה ללוח | לחיצה על "Copy" | תוצאות קטנות שמדביקים ישר חזרה לקוד |
| העתקה ידנית של בחירת הכל | בחירת אזור הפלט ולחיצה על Ctrl/Cmd + C |
הגיבוי כשכפתור ההעתקה נכשל |
הקובץ שהורד מקודד ב-UTF-8 בלי BOM כברירת מחדל. זה חשוב: JSON עם BOM נשבר לגמרי בכלים מפרסים רבים (ראו את המדור על BOM בשאלות נפוצות על תחביר ופורמטים).
האם JSON5 ו-JSONC נתמכים?
כן, אבל הבדילו בין "פירוס" ל"פלט".
- בצד הקלט אפשר להדביק JSON5 (גרשיים בודדים, מפתחות בלי גרשיים, הערות, פסיקים בסוף, מספרים הקסדצימליים) או JSONC (הערות בלבד);
- בצד הפלט אפשר להמיר ל-JSON סטנדרטי, או להמיר JSON סטנדרטי חזרה ל-JSON5 כדי להקל על עריכה ידנית.
תמיד פלטו JSON סטנדרטי כשחוצים מערכות. JSON5 הוא דיאלקט לבני אדם שכותבים קונפיגורציה; גוף בקשה עם
Content-Type: application/json שמכיל הערות או פסיקים בסוף יידחה בדרך כלל על ידי השרת.
4. סביבה ותאימות
האם זה עובד בטלפון?
כן. הממשק נזרם לעמודה אחת, ועיצוב, מזעור, השוואה ו-JSONPath נשמרים כולם.
אבל טיפול בקבצים גדולים בטלפון הוא חוויה גרועה: המקלדת הרכה מכסה את התוכן, בחירת טקסט קשה, והדפדפן עלול לזרוק את העמוד כשעוברים לאפליקציה אחרת, ולאבד את התוכן. מקובל כפתרון חירום, אבל ביום-יום עשו את זה על שולחני.
למה אותו קובץ נפתח ב-Chrome אבל נותן שגיאה ב-Safari?
בדרך כלל זה לא הבדל דפדפן אלא הבדל קידוד. אבחון בסדר הזה:
- BOM: UTF-8 שנשמר ב-Windows Notepad כולל BOM, וחלק מהמפרסים לא סובלים אותו;
- סיומות שורה: ערבוב של CRLF ו-LF לא משפיע על JSON עצמו, אבל מזיז את מספרי השורות המדווחים לשגיאה, כך שזה נראה כמו "מיקום השגיאה שגוי";
- תווים בלתי נראים: טקסט שהועתק מדף אינטרנט עלול להכיל רווחים ברוחב אפס (U+200B), בלתי נראים לעין אבל מספיקים לשבור התאמת מפתחות.
פקודה אחת רואה דרך זה:
# Look at the hex of the first 16 bytes; a leading EF BB BF means a BOM is present
head -c 16 data.json | xxd
5. עיון מהיר
| שאלה | מסקנה |
|---|---|
| האם זה מעלה נתונים | לא, הכל מעובד מקומית בדפדפן, וזה עובד גם בלי אינטרנט |
| איפה הנתונים נשמרים | localStorage, היסטוריה והגדרות בלבד, אף פעם לא קבצים |
| איזה גודל קובץ סביר | חלק מתחת ל-2 MB; מעל 10 MB עברו לשורת הפקודה |
סינית הפכה ל-\u |
לחצתם על escape; שקול אבל מסורבל, ובדרך כלל לא נחוץ |
| זה קפא, מה עכשיו | המתינו להתאוששות → כווצו את העץ → העתיקו החוצה והשתמשו ב-jq |
| האם הייצוא בלי BOM | כן, UTF-8 בלי BOM |
| האם הערות נתמכות | JSON5/JSONC בצד הקלט; פלטו JSON סטנדרטי |