วิธีเปรียบเทียบ JSON
- วาง JSON ต้นฉบับทางซ้ายและ JSON ที่แก้ไขแล้วทางขวา หรือลากไฟล์มาวางในแต่ละฝั่ง
- อ่านสรุปและรายการความแตกต่าง: ค่าที่ถูกเพิ่ม ลบ หรือเปลี่ยนแปลงทุกค่าจะแสดงพร้อมพาธ เช่น
$.users[2].email - เลื่อนลงไปที่มุมมองแบบเคียงข้างกันเพื่อดูการเปลี่ยนแปลงในบริบท ติ๊ก ไม่สนใจลำดับในอาร์เรย์ หากลำดับของรายการในลิสต์ไม่สำคัญ
JSON diff เชิงความหมาย ไม่ใช่ text diff
text diff ทั่วไปจะรายงานการเปลี่ยนแปลงทุกครั้งที่คีย์ย้ายตำแหน่ง การเยื้องต่างกัน หรือตัวเลขถูกเขียนต่างรูปแบบ แต่ JSON diff นี้เปรียบเทียบที่ตัวข้อมูลจริง:
- ไม่สนใจลำดับคีย์ –
{"a":1,"b":2}เท่ากับ{"b":2,"a":1} - ไม่สนใจการจัดรูปแบบ – ช่องว่าง การขึ้นบรรทัด และการเยื้องไม่มีผล
- เปรียบเทียบตัวเลขตามค่า –
1.0เท่ากับ1 - จัดแนวอาร์เรย์ – การแทรกรายการเพียงรายการเดียวจะไม่ทำให้รายการถัดไปทั้งหมดถูกนับว่าเปลี่ยนแปลง และอ็อบเจ็กต์ที่ถูกแก้ไขจะถูกจับคู่กับอ็อบเจ็กต์ที่คล้ายกันที่สุด
- ไม่สนใจลำดับในอาร์เรย์ – เปรียบเทียบอาร์เรย์เป็นคอลเลกชันที่ไม่มีลำดับ เหมาะกับลิสต์ของแท็ก ID หรือสิทธิ์การเข้าถึง
วิธีอ่านผลการเปรียบเทียบ
| ป้ายกำกับ | ความหมาย | พาธชี้ไปที่ |
|---|---|---|
| เพิ่ม | ค่านี้มีเฉพาะใน JSON ที่แก้ไขแล้ว | ตำแหน่งใน JSON ที่แก้ไขแล้ว |
| ลบ | ค่านี้มีเฉพาะใน JSON ต้นฉบับ | ตำแหน่งใน JSON ต้นฉบับ |
| เปลี่ยนแปลง | ทั้งสองเอกสารมีคีย์นี้ แต่ค่าหรือชนิดข้อมูลต่างกัน | ตำแหน่งใน JSON ที่แก้ไขแล้ว |
ในมุมมองแบบเคียงข้างกัน เอกสารทั้งสองจะถูกจัดรูปแบบพร้อมเรียงคีย์ เพื่อให้บรรทัดที่ตรงกันอยู่ตรงข้ามกัน ส่วนช่วงยาวๆ ที่ไม่เปลี่ยนแปลงจะถูกพับไว้ เว้นแต่คุณจะยกเลิกการติ๊ก ซ่อนบรรทัดที่ไม่เปลี่ยนแปลง
คำถามที่พบบ่อย
ลำดับของคีย์มีผลหรือไม่?
ไม่ ตามนิยามแล้วอ็อบเจ็กต์ JSON ไม่มีลำดับ การเปรียบเทียบจึงไม่สนใจลำดับคีย์ ส่วนอาร์เรย์ถือว่ามีลำดับ เว้นแต่คุณจะติ๊กตัวเลือก “ไม่สนใจลำดับในอาร์เรย์”
เปรียบเทียบไฟล์ JSON ขนาดใหญ่ได้ไหม?
ได้ การเปรียบเทียบทำงานในเบราว์เซอร์ของคุณและแสดงความแตกต่าง 200 จุดแรก พร้อมปุ่มสำหรับแสดงทั้งหมด ส่วนมุมมองแบบเคียงข้างกันแสดงได้สูงสุด 5,000 บรรทัด
เปรียบเทียบ JSON ในโค้ดได้อย่างไร?
ใน Python ใช้ json.loads(a) == json.loads(b) เพื่อทดสอบว่าเท่ากันหรือไม่ JavaScript ไม่มีฟังก์ชันเปรียบเทียบเชิงลึกในตัว แต่ไลบรารีอย่าง Lodash มี _.isEqual(a, b) ให้ใช้ ส่วนบน command line คำสั่ง diff <(jq -S . a.json) <(jq -S . b.json) จะแสดงบรรทัดที่ต่างกัน
ข้อมูลของฉันถูกอัปโหลดหรือไม่?
ไม่ เอกสารทั้งสองถูกเปรียบเทียบภายในเบราว์เซอร์ของคุณและไม่เคยออกจากอุปกรณ์ของคุณ