איך להשתמש בו
- הדבק את ה-JSON המקורי משמאל ואת ה-JSON שהשתנה מימין, או נסה את הדוגמה.
- בחר כיצד מושווים מערכים: לפי מיקום, או בהתאמת פריטים כך שפריט שהוכנס ידווח פעם אחת.
- קרא את ההבדלים כרשימה או זה לצד זה. לכל אחד יש נתיב מהשורש ($).
- העתק את הדוח כדי להדביק אותו בכרטיס או בסקירת קוד.
איך זה עובד
שני המסמכים מנותחים ומושווים כנתונים, לא כטקסט. אובייקטים מושווים מפתח אחר מפתח, כך שסדר המפתחות והרווחים או ההזחה אינם חשובים. מספרים מושווים לפי ערכם, כך ש-1 ו-1.0 שווים.
לכל הבדל יש נתיב שנכתב כביטוי JSONPath: $ הוא השורש, .name הוא מאפיין, [2] הוא אינדקס במערך, ומפתחות שאינם שמות פשוטים נכתבים במרכאות, כמו ב-$["first-name"]. מדווחים ארבעה סוגי הבדלים: נוסף (רק בצד ימין), הוסר (רק בצד שמאל), השתנה (אותו סוג, ערך שונה) והסוג השתנה (לדוגמה המספר 44.9 הפך למחרוזת "44.90", או ערך הפך ל-null). כאשר אובייקט או מערך שלם נוסף או הוסר, הדבר מדווח פעם אחת בנתיב שלו במקום פעם לכל שדה.
מערכים מושווים לפי מיקום כברירת מחדל: פריט 0 עם פריט 0, פריט 1 עם פריט 1. אם פריט מוכנס בהתחלה, כל פריט מאוחר יותר נראה כאילו השתנה. האפשרות “התאמת פריטים שהוזזו” מיישרת קודם את שני המערכים באמצעות תת-הרצף המשותף הארוך ביותר של פריטים שווים, כך שהוספה או מחיקה מדווחת פעם אחת בלבד ושאר הפריטים מותאמים זה לזה. פריטים שנוספו משתמשים באינדקס שלהם בצד ימין, ופריטים שהוסרו – באינדקס שלהם בצד שמאל. ההתאמה אינה מתבצעת עבור מערכים גדולים מאוד (מעל כ-2 מיליון זוגות פריטים), ואז הם מושווים לפי מיקום.
נתיבי המפתחות ברשימה ממוינים בסדר אלפביתי בתוך כל אובייקט. מוצגים עד 2,000 הבדלים; הדוח המועתק כולל תמיד את כולם.
דוגמאות
בדיקת שינוי ב-API
השווה בין תגובת אתמול לתגובת היום עבור אותה הזמנה. ההבדל מראה ש-$.status השתנה מ-"pending" ל-"shipped", ש-$.total שינה את הסוג ממספר למחרוזת, ש-$.coupon הוסר וש-$.customer.phone נוסף.
סחף תצורה
הדבק את תצורת ה-JSON מסביבת הבדיקות ומהייצור. מכיוון שמתעלמים מסדר המפתחות, מופיעים רק הבדלים אמיתיים כמו $.cache.ttl 300 → 60, גם אם הקבצים נשמרו על ידי כלים שונים.
רשימות עם פריט שהוכנס
רשימת מוצרים קיבלה פריט ראשון חדש. לפי מיקום, כל מוצר נראה כאילו השתנה; עם "התאמת פריטים שהועברו", התוצאה היא רק "נוסף $[0]".
שאלות נפוצות
במה זה שונה מהשוואת טקסט?
השוואת טקסט משווה שורות, כך ששינוי סדר מפתחות או עיצוב מחדש מופיעים כשינויים. כלי זה משווה את הנתונים המנותחים, כך שמדווחים רק על הבדלים בערכים, בסוגים ובמבנה.
מדוע מערך מציג שינויים רבים לאחר הכנסה אחת?
במצב "לפי מיקום", פריטים מושווים באותו אינדקס, והכנסה מזיזה כל פריט מאוחר יותר. עבור ל"התאם פריטים שהועברו" כדי ליישר תחילה פריטים שווים.
האם "1" ו-1 נחשבים שווים?
לא. אחד הוא מחרוזת והשני מספר, ולכן ההבדל מדווח כשינוי סוג. ערכים מאותו סוג מושווים בדיוק.
האם אפשר להשוות קבצים גדולים מאוד?
קבצים של כמה מגה-בייט עובדים, אבל הכל מעובד בזיכרון הדפדפן שלך, כך שמסמכים גדולים מאוד עלולים להיות איטיים בטלפונים.
פרטיות
שני המסמכים מנותחים ומושווים רק בדפדפן שלך. דבר לא מועלה, לא מאוחסן ולא נכלל בניתוחים סטטיסטיים.