ตัวตรวจสอบความถูกต้องของ JSON

วางเอกสาร JSON ใดก็ได้ แล้วดูว่ามันแยกวิเคราะห์ได้อย่างถูกต้องตาม RFC 8259 หรือไม่ ข้อมูลที่ไม่ถูกต้องจะคืนกลับมาพร้อมปัญหาที่แม่นยำ, เครื่องหมายจุลภาคต่อท้ายหลังรายการสุดท้ายในอาร์เรย์ คีย์ที่ไม่มีอัญประกาศ สตริงที่ไม่ปิด อัญประกาศเดี่ยวที่ JSON ต้องการเป็นอัญประกาศคู่ ลำดับ escape ที่ผิด, พร้อมบรรทัดและคอลัมน์ที่ตัวแยกวิเคราะห์หยุด มีประโยชน์เมื่อต้องดีบักการตอบกลับของ API ไฟล์ config ไฟล์ package.json ที่เพื่อนร่วมทีมแก้ด้วยมือ หรือผลลัพธ์จากตัวสร้างโค้ด

การตรวจสอบ JSON ทำงานอย่างไร

  1. 1

    วาง JSON ของคุณ

    ใส่ payload ไฟล์ config หรือการตอบกลับของ API ช่องว่างใช้ได้ ส่วนแท็บและคอมเมนต์ใช้ไม่ได้ ( JSON บริสุทธิ์ไม่มีคอมเมนต์ )

  2. 2

    แยกวิเคราะห์ด้วยตัวแยกที่เคร่งครัดตาม RFC 8259

    ตัวตรวจสอบปฏิเสธทุกสิ่งที่มาตรฐานห้าม: เครื่องหมายจุลภาคต่อท้าย คีย์ไม่มีอัญประกาศ อัญประกาศเดี่ยว `undefined` เลขฐานสิบหก

  3. 3

    อ่านข้อผิดพลาด

    หากล้มเหลว คุณจะได้รับข้อความจากตัวแยกวิเคราะห์พร้อมตำแหน่งโดยประมาณ: เพียงพอที่จะนำทางตรงไปยังอักขระนั้น

  4. 4

    แก้ไขและตรวจสอบใหม่

    แก้ปัญหา วางอีกครั้ง และยืนยันว่าเอกสารถูกต้องก่อนที่จะ commit หรือส่ง

JSON ที่เคร่งครัดอนุญาตอะไร, และไม่อนุญาตอะไร

มีรูปแบบ “เกือบเป็น JSON” จำนวนมากลอยอยู่ทั่วไป ( JSON5, JSONC, HJSON, ไฮบริดคล้าย YAML ) มาตรฐาน JSON เองนั้นเล็กและเคร่งครัด ตัวตรวจสอบนี้บอกคุณว่าเอกสารของคุณผ่านตัวแยกวิเคราะห์ที่เคร่งครัดหรือไม่, ซึ่งเป็นสิ่งที่ระบบปลายทางส่วนใหญ่ทำงานจริง

กฎที่ทำให้คนส่วนใหญ่สะดุด

กฎ ถูกต้อง ไม่ถูกต้อง
คีย์ต้องเป็นสตริงในอัญประกาศคู่ {"a": 1} {a: 1}
สตริงใช้อัญประกาศคู่เท่านั้น "hello" 'hello'
ห้ามมีเครื่องหมายจุลภาคต่อท้าย [1, 2, 3] [1, 2, 3,]
ห้ามมีคอมเมนต์ ( ไม่มี ) // comment หรือ /* */
ตัวเลข: ห้ามนำหน้าด้วย +, ห้าม .5 0.5 +1, .5
ลิเทอรัลที่สงวนไว้เท่านั้น true, false, null undefined, NaN
การเข้ารหัส UTF-8 สตริง Unicode ลำดับไบต์ที่ไม่ถูกต้อง

ข้อผิดพลาดที่พบบ่อยและความหมาย

  • “Unexpected token }, คุณมีเครื่องหมายจุลภาคต่อท้ายก่อนวงเล็บปีกกาปิด
  • “Expected property name”, คีย์ไม่มีอัญประกาศ หรือคุณลืมใส่อัญประกาศรอบคีย์เปิด
  • “Unexpected end of input”, { หรือ [ ที่เปิดไม่ได้ปิด ให้นับวงเล็บปีกกา
  • “Bad control character”, แท็บ ขึ้นบรรทัดใหม่ หรือไบต์ควบคุมอื่นภายในลิเทอรัลสตริง ให้ escape เป็น \t, \n ฯลฯ
  • “Duplicate key”, ที่จริงไม่ใช่ข้อผิดพลาดตามมาตรฐาน JSON ( มาตรฐานระบุว่า SHOULD ไม่ซ้ำ ) แต่ตัวตรวจสอบหลายตัวเตือน ตัวตรวจสอบนี้แจ้งเป็นข้อสังเกต ไม่ใช่ความล้มเหลวที่รุนแรง

หากคุณต้องการรูปแบบที่ผ่อนปรนกว่า

  • JSON5 อนุญาตเครื่องหมายจุลภาคต่อท้าย คอมเมนต์ และอัญประกาศเดี่ยว ใช้ตัวแยกวิเคราะห์ JSON5 หากนั่นคือรูปแบบเป้าหมายของคุณ
  • JSONC ( JSON พร้อมคอมเมนต์ ) คือสิ่งที่การตั้งค่า VS Code ใช้ ลบคอมเมนต์ก่อนการแยกวิเคราะห์แบบเคร่งครัด
  • YAML เป็นรูปแบบที่ต่างกัน อย่าคิดว่ามันเป็นเพียง “JSON ที่เยื้องวรรค”

เคล็ดลับ

  • ตรวจสอบก่อน commit การพิมพ์ผิดใน package.json หรือ config ของ CI ทำให้ทั้ง build เสียจนกว่าจะมีคนสังเกตเห็น
  • จัดรูปแบบให้สวยหลังตรวจสอบ เพื่อให้ diff ที่ทบทวนอ่านง่าย ไฟล์ JSON บรรทัดเดียวนั้นถูกต้องแต่ทบทวนได้ยากมาก
  • สำหรับ payload ขนาดใหญ่ ให้ตรวจสอบแบบสตรีม ( เช่น jq บนบรรทัดคำสั่ง ) การแยกวิเคราะห์ในเบราว์เซอร์มีปัญหาเมื่อเกินไม่กี่ MB

คำถามที่พบบ่อย

เครื่องมือนี้ตรวจสอบความถูกต้องทางไวยากรณ์เท่านั้น, เป็น JSON ที่ถูกต้องตามรูปแบบหรือไม่ สำหรับกฎทางโครงสร้าง ( ฟิลด์ที่จำเป็น ค่า enum ความยาวสตริง ) ให้ใช้ตัวตรวจสอบ JSON Schema สองขั้นตอนนี้เสริมกัน ไม่มีประโยชน์ที่จะรันการตรวจสอบ Schema กับเอกสารที่ไม่ใช่ JSON ที่ถูกต้องตั้งแต่แรก

เพราะ JSON มาตรฐานไม่มีคอมเมนต์ // และ /* */ เป็นส่วนขยายตามสามัญสำนึก ( JSONC, JSON5 ) แต่ JSON บริสุทธิ์ปฏิเสธมัน ลบคอมเมนต์ก่อนส่งให้ผู้บริโภคที่เคร่งครัด หรือนำ JSON5 มาใช้ทั่วทั้ง stack ของคุณ

ไม่ถูกต้องใน JSON ที่เคร่งครัด มาตรฐานอนุญาตเฉพาะจำนวนจำกัด ให้ serialize เป็นสตริง ( "NaN", "Infinity" ) หรือเป็น null ขึ้นอยู่กับว่าผู้บริโภคของคุณจัดการกับข้อมูลที่หายไปอย่างไร

ไม่, การตรวจสอบทำงานในเบราว์เซอร์ของคุณ ดังนั้น payload ที่คุณวางจะไม่ออกจากหน้านี้ ปลอดภัยสำหรับไฟล์ config ที่อ่อนไหวและการตอบกลับของ API ที่มีข้อมูลรับรอง

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

ตัวตรวจสอบอีเมล

ตรวจสอบที่อยู่อีเมล: ตรวจไวยากรณ์ RFC 5322 ค้นหา MX เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ

เครื่องมือสร้าง EditorConfig

สร้างไฟล์ .editorconfig ด้วยกฎสไตล์และขนาดการเยื้อง การจบบรรทัด ชุดอักขระ และช่องว่างของคุณ เพื่อให้การจัดรูปแบบสอดคล้องกันในทุก IDE และโปรแกรมแก้ไข

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องมือนี้มีให้บริการในภาษาอื่น