نحوه استفاده
- JSON اصلی را در سمت چپ و JSON تغییریافته را در سمت راست جایگذاری کنید، یا مثال را امتحان کنید.
- نحوه مقایسه آرایهها را انتخاب کنید: بر اساس موقعیت، یا با مطابقت آیتمها تا یک آیتم درجشده فقط یکبار گزارش شود.
- تفاوتها را بهصورت فهرست یا کنار هم بخوانید. هر مورد مسیری از ریشه ($) دارد.
- گزارش را کپی کنید تا آن را در یک تیکت یا بازبینی کد جایگذاری کنید.
نحوه کار
هر دو سند بهعنوان داده تجزیه و مقایسه میشوند، نه بهعنوان متن. اشیا کلیدبهکلید مقایسه میشوند؛ بنابراین ترتیب کلیدها و فاصلهها یا تورفتگیها مهم نیستند. اعداد بر اساس مقدار مقایسه میشوند؛ بنابراین 1 و 1.0 برابرند.
هر تفاوت مسیری دارد که مانند عبارت JSONPath نوشته میشود: $ ریشه است، .name یک ویژگی است، [2] یک اندیس آرایه است و کلیدهایی که نام ساده ندارند درون گیومه قرار میگیرند، مانند $["first-name"]. چهار نوع تفاوت گزارش میشود: افزودهشده (فقط در سمت راست)، حذفشده (فقط در سمت چپ)، تغییرکرده (نوع یکسان، مقدار متفاوت) و تغییر نوع (برای مثال عدد 44.9 به رشته "44.90" تبدیل شده است، یا مقداری null شده است). وقتی کل یک شی یا آرایه افزوده یا حذف میشود، فقط یک بار در مسیر خودش گزارش میشود، نه یک بار برای هر فیلد.
آرایهها بهصورت پیشفرض بر اساس موقعیت مقایسه میشوند: عنصر 0 با عنصر 0، عنصر 1 با عنصر 1. اگر عنصری در ابتدا درج شود، همه عنصرهای بعدی تغییرکرده به نظر میرسند. «مطابقت موارد جابهجاشده» ابتدا دو آرایه را با استفاده از طولانیترین زیردنباله مشترک از عناصر برابر تراز میکند؛ بنابراین درج یا حذف فقط یک بار گزارش میشود و عناصر باقیمانده با هم جفت میشوند. عناصر افزودهشده از اندیس خود در سمت راست استفاده میکنند و عناصر حذفشده از اندیس خود در سمت چپ. تطبیق برای آرایههای بسیار بزرگ (بیش از حدود 2 میلیون جفت عنصر) رد میشود و آن آرایهها سپس بر اساس موقعیت مقایسه میشوند.
مسیرهای کلید در فهرست درون هر شیء بهصورت الفبایی مرتب میشوند. حداکثر 2,000 تفاوت نمایش داده میشود؛ گزارش کپیشده همیشه شامل همه آنهاست.
نمونهها
بررسی یک تغییر API
پاسخ دیروز و امروز را برای همان سفارش مقایسه کنید. diff نشان میدهد $.status از «pending» به «shipped» تغییر کرده، نوع $.total از عدد به رشته تغییر کرده، $.coupon حذف شده و $.customer.phone اضافه شده است.
انحراف پیکربندی
پیکربندی JSON را از محیطهای staging و production جایگذاری کنید. چون ترتیب کلیدها نادیده گرفته میشود، فقط تفاوتهای واقعی مانند $.cache.ttl ۳۰۰ → ۶۰ نمایش داده میشوند، حتی اگر فایلها با ابزارهای متفاوتی ذخیره شده باشند.
فهرستهایی با یک آیتم درجشده
یک آیتم جدید به ابتدای فهرست محصولات اضافه شده است. بر اساس موقعیت، به نظر میرسد همه محصولات تغییر کردهاند؛ با «تطبیق آیتمهای جابهجاشده»، نتیجه فقط یک «Added $[0]» است.
پرسشهای متداول
این ابزار چه تفاوتی با یک diff متنی دارد؟
یک diff متنی خطها را مقایسه میکند، بنابراین تغییر ترتیب کلیدها یا قالببندی مجدد بهعنوان تغییر نمایش داده میشود. این ابزار دادههای تجزیهشده را مقایسه میکند، بنابراین فقط تفاوتهای مقادیر، نوعها و ساختار گزارش میشود.
چرا یک آرایه پس از یک درج، تغییرات زیادی نشان میدهد؟
در حالت «بر اساس موقعیت»، آیتمها در همان ایندکس مقایسه میشوند و با هر درج، همه آیتمهای بعدی جابهجا میشوند. برای همتراز کردن ابتدا آیتمهای برابر، به حالت «مطابقت آیتمهای جابهجاشده» بروید.
آیا «1» و 1 برابر در نظر گرفته میشوند؟
خیر. یکی رشته است و دیگری عدد؛ بنابراین این تفاوت بهعنوان تغییر نوع گزارش میشود. مقادیر با نوع یکسان دقیقاً مقایسه میشوند.
آیا میتوانم فایلهای بسیار بزرگ را مقایسه کنم؟
فایلهایی با حجم چند مگابایت کار میکنند، اما همهچیز در حافظه مرورگر شما پردازش میشود؛ بنابراین سندهای بسیار بزرگ ممکن است روی تلفن همراه کند باشند.
حریم خصوصی
هر دو سند فقط در مرورگر شما تجزیه و مقایسه میشوند. هیچ چیزی بارگذاری، ذخیره یا وارد تحلیلها نمیشود.