วิธีใช้งาน
- วาง JSON ต้นฉบับไว้ด้านซ้ายและ JSON ที่เปลี่ยนแปลงไว้ด้านขวา หรือลองใช้ตัวอย่าง
- เลือกวิธีเปรียบเทียบอาร์เรย์: แบบตามตำแหน่ง หรือแบบจับคู่รายการ เพื่อให้รายการที่ถูกแทรกถูกรายงานเพียงครั้งเดียว
- อ่านผลต่างแบบรายการหรือแบบเทียบข้างกัน แต่ละผลต่างมีพาธจากราก ($)
- คัดลอกรายงานไปวางในตั๋วงานหรือรีวิวโค้ด
วิธีการทำงาน
เอกสารทั้งสองจะถูกแยกวิเคราะห์และเปรียบเทียบในฐานะข้อมูล ไม่ใช่ข้อความ ออบเจกต์ถูกเปรียบเทียบทีละคีย์ ลำดับของคีย์และช่องว่างหรือการเยื้องจึงไม่มีผล ตัวเลขถูกเปรียบเทียบด้วยค่า ดังนั้น 1 และ 1.0 จึงเท่ากัน
ความแตกต่างแต่ละรายการมี path ที่เขียนแบบนิพจน์ JSONPath: $ คือราก, .name คือพร็อพเพอร์ตี้, [2] คือดัชนีอาร์เรย์ และคีย์ที่ไม่ใช่ชื่อธรรมดาจะถูกใส่เครื่องหมายคำพูด เช่น $["first-name"] รายงานความแตกต่าง 4 ประเภท: เพิ่ม (เฉพาะฝั่งขวา), ลบ (เฉพาะฝั่งซ้าย), เปลี่ยนแปลง (ชนิดเดียวกันแต่ค่าต่างกัน) และเปลี่ยนชนิด (เช่น ตัวเลข 44.9 กลายเป็นสตริง "44.90" หรือค่ากลายเป็น null) เมื่อออบเจกต์หรืออาร์เรย์ทั้งชุดถูกเพิ่มหรือลบ จะรายงานครั้งเดียวที่ path ของมัน แทนที่จะรายงานทีละฟิลด์
อาร์เรย์ถูกเปรียบเทียบตามตำแหน่งโดยค่าเริ่มต้น: รายการที่ 0 กับรายการที่ 0 รายการที่ 1 กับรายการที่ 1 หากมีรายการแทรกที่ตำแหน่งแรก รายการถัดไปทั้งหมดจะดูเหมือนเปลี่ยนไป “จับคู่รายการที่ย้าย” จะจัดเรียงอาร์เรย์ทั้งสองให้ตรงกันก่อนโดยใช้ลำดับย่อยร่วมที่ยาวที่สุดของรายการที่เท่ากัน ทำให้การแทรกหรือลบถูกรายงานเพียงครั้งเดียว และรายการที่เหลือจะถูกจับคู่กัน รายการที่เพิ่มใช้ดัชนีฝั่งขวา รายการที่ลบใช้ดัชนีฝั่งซ้าย การจับคู่จะถูกข้ามสำหรับอาร์เรย์ขนาดใหญ่มาก (เกินประมาณ 2 ล้านคู่รายการ) ซึ่งจะเปรียบเทียบตามตำแหน่งแทน
รายการ path ของคีย์ถูกเรียงลำดับตามตัวอักษรภายในแต่ละออบเจกต์ แสดงความแตกต่างได้สูงสุด 2,000 รายการ ส่วนรายงานที่คัดลอกจะมีครบทั้งหมดเสมอ
ตัวอย่าง
ตรวจสอบการเปลี่ยนแปลงของ API
เปรียบเทียบการตอบกลับของเมื่อวานกับวันนี้สำหรับคำสั่งซื้อเดียวกัน ผลต่างจะแสดง $.status เปลี่ยนจาก "pending" เป็น "shipped", $.total เปลี่ยนชนิดจากตัวเลขเป็นสตริง, $.coupon ถูกลบ และ $.customer.phone ถูกเพิ่ม
การคลาดเคลื่อนของ configuration
วาง config JSON จาก staging และ production เนื่องจากลำดับคีย์ไม่มีผล จึงเห็นเฉพาะความแตกต่างจริง เช่น $.cache.ttl 300 → 60 แม้ว่าไฟล์จะถูกบันทึกด้วยเครื่องมือต่างกันก็ตาม
ลิสต์ที่มีสมาชิกถูกแทรก
รายการสินค้ามีรายการใหม่แทรกที่ตำแหน่งแรก เมื่อเทียบตามตำแหน่ง สินค้าทุกตัวจะดูเหมือนเปลี่ยนไป แต่เมื่อใช้ “จับคู่รายการที่ย้าย” ผลลัพธ์จะเหลือเพียง “เพิ่ม $[0]”
คำถามที่พบบ่อย
ต่างจากการเปรียบเทียบข้อความอย่างไร
การเปรียบเทียบข้อความเทียบทีละบรรทัด การสลับลำดับคีย์หรือการจัดรูปแบบใหม่จึงแสดงเป็นการเปลี่ยนแปลง เครื่องมือนี้เปรียบเทียบข้อมูลที่แยกวิเคราะห์แล้ว จึงรายงานเฉพาะความแตกต่างของค่า ชนิดข้อมูล และโครงสร้างเท่านั้น
ทำไมอาร์เรย์จึงแสดงการเปลี่ยนแปลงจำนวนมากหลังการแทรกรายการเดียว
ในโหมด “ตามตำแหน่ง” รายการจะถูกเปรียบเทียบที่ดัชนีเดียวกัน และการแทรกหนึ่งรายการจะทำให้รายการถัดไปขยับทั้งหมด เปลี่ยนเป็น “จับคู่รายการที่ย้าย” เพื่อจัดรายการที่เท่ากันก่อน
“1” กับ 1 ถือว่าเท่ากันหรือไม่
ไม่ ค่าหนึ่งเป็นสตริงและอีกค่าเป็นตัวเลข จึงรายงานความแตกต่างเป็นการเปลี่ยนชนิดข้อมูล ค่าที่มีชนิดข้อมูลเดียวกันจะถูกเปรียบเทียบแบบตรงค่า
เปรียบเทียบไฟล์ขนาดใหญ่มากได้ไหม
ไฟล์ขนาดไม่กี่เมกะไบต์ทำได้ แต่ทุกอย่างประมวลผลในหน่วยความจำของเบราว์เซอร์ เอกสารขนาดใหญ่มากอาจช้าบนมือถือ
ความเป็นส่วนตัว
เอกสารทั้งสองถูกแยกวิเคราะห์และเปรียบเทียบในเบราว์เซอร์ของคุณเท่านั้น ไม่มีการอัปโหลด จัดเก็บ หรือรวมอยู่ในข้อมูลวิเคราะห์