ตัวตรวจสอบความถูกต้องของ JSON
วางเอกสาร JSON ใดก็ได้ แล้วดูว่ามันแยกวิเคราะห์ได้อย่างถูกต้องตาม RFC 8259 หรือไม่ ข้อมูลที่ไม่ถูกต้องจะคืนกลับมาพร้อมปัญหาที่แม่นยำ, เครื่องหมายจุลภาคต่อท้ายหลังรายการสุดท้ายในอาร์เรย์ คีย์ที่ไม่มีอัญประกาศ สตริงที่ไม่ปิด อัญประกาศเดี่ยวที่ JSON ต้องการเป็นอัญประกาศคู่ ลำดับ escape ที่ผิด, พร้อมบรรทัดและคอลัมน์ที่ตัวแยกวิเคราะห์หยุด มีประโยชน์เมื่อต้องดีบักการตอบกลับของ API ไฟล์ config ไฟล์ package.json ที่เพื่อนร่วมทีมแก้ด้วยมือ หรือผลลัพธ์จากตัวสร้างโค้ด
การตรวจสอบ JSON ทำงานอย่างไร
-
1
วาง JSON ของคุณ
ใส่ payload ไฟล์ config หรือการตอบกลับของ API ช่องว่างใช้ได้ ส่วนแท็บและคอมเมนต์ใช้ไม่ได้ ( JSON บริสุทธิ์ไม่มีคอมเมนต์ )
-
2
แยกวิเคราะห์ด้วยตัวแยกที่เคร่งครัดตาม RFC 8259
ตัวตรวจสอบปฏิเสธทุกสิ่งที่มาตรฐานห้าม: เครื่องหมายจุลภาคต่อท้าย คีย์ไม่มีอัญประกาศ อัญประกาศเดี่ยว `undefined` เลขฐานสิบหก
-
3
อ่านข้อผิดพลาด
หากล้มเหลว คุณจะได้รับข้อความจากตัวแยกวิเคราะห์พร้อมตำแหน่งโดยประมาณ: เพียงพอที่จะนำทางตรงไปยังอักขระนั้น
-
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 และโปรแกรมแก้ไข
ตัวลดรูปพีชคณิตบูลีน
ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^
เครื่องมือนี้มีให้บริการในภาษาอื่น
- JSONバリデーター [JA]
- Trình kiểm tra JSON [VI]
- JSON 검사기 [KO]
- مدقّق JSON [AR]
- Validador JSON [PT]
- JSON-Validator [DE]
- Validador JSON [ES]
- Validateur JSON [FR]
- JSON-validator [NL]
- JSON-validator [SV]
- JSON Validator [ID]
- Walidator JSON [PL]
- JSON Validator [EN]
- Validator JSON [IT]
- Валидатор JSON [RU]
- JSON Doğrulayıcı [TR]
- JSON 校验器 [ZH]