ตัวตรวจสอบและจัดรูปแบบ JSON
ตัวตรวจสอบและจัดรูปแบบ JSON เป็นเครื่องมือฟรีที่ใช้ตรวจสอบว่า JSON มีไวยากรณ์ถูกต้องหรือไม่ พร้อมจัดรูปแบบเนื้อหาที่ถูกต้องให้อ่านโครงสร้างได้ง่ายขึ้น
การตรวจสอบและจัดรูปแบบ JSON ทำอะไรบ้าง?
การตรวจสอบ JSON ช่วยยืนยันว่าข้อมูลที่ป้อนเป็นไปตามไวยากรณ์ของ JSON ส่วนการจัดรูปแบบจะแสดงออบเจ็กต์และอาร์เรย์ที่ถูกต้องโดยใช้ระยะห่างและการเยื้องอย่างสม่ำเสมอ จึงมีประโยชน์เมื่อตรวจแก้การตอบกลับจาก API ตรวจสอบการกำหนดค่าก่อนนำไปใช้งาน หรืออ่านข้อมูลแบบย่อที่ได้รับจากบุคคลที่สาม
JSON มีกฎไวยากรณ์เข้มงวดกว่าออบเจ็กต์ลิเทอรัลของ JavaScript ชื่อพร็อพเพอร์ตีต้องอยู่ในเครื่องหมายอัญประกาศคู่ สตริงใช้เครื่องหมายอัญประกาศเดี่ยวไม่ได้ และทั้งออบเจ็กต์กับอาร์เรย์ห้ามมีจุลภาคต่อท้าย นอกจากนี้ ความคิดเห็น, undefined, NaN และ Infinity ยังไม่อยู่ในข้อกำหนด JSON
เครื่องมือนี้ใช้ฟังก์ชัน json_decode ของ PHP บนเซิร์ฟเวอร์ ข้อมูลที่คุณป้อนจะถูกส่งไปยังเซิร์ฟเวอร์ผ่าน HTTPS และไม่มีการจัดเก็บ แต่ข้อมูลจะออกจากอุปกรณ์ของคุณ ดังนั้นควรลบรหัสผ่าน โทเค็นการเข้าถึง และข้อมูลส่วนบุคคล หากกฎการจัดการข้อมูลขององค์กรไม่อนุญาตให้ส่งข้อมูลเหล่านี้ไปยังเซิร์ฟเวอร์ภายนอก
ตรวจสอบและจัดรูปแบบ JSON อย่างไร?
วางเนื้อหาลงในช่อง JSON แล้วเรียกใช้เครื่องมือ เพื่อให้ได้ผลลัพธ์ที่เป็นประโยชน์ ควรป้อนค่า JSON ที่สมบูรณ์หนึ่งค่า ไม่ใช่เพียงบางส่วนของออบเจ็กต์ที่คัดลอกมาจากบรรทัดบันทึก
- คัดลอกการตอบกลับดิบ บล็อกการกำหนดค่า หรือค่า JSON อื่นๆ โดยไม่รวมป้ายกำกับจากคอนโซลที่อยู่รอบข้อมูล
- วางข้อมูลลงในช่อง JSON โดยคงเครื่องหมายอัญประกาศและอักขระหลีกไว้ตามเดิม
- เรียกใช้การตรวจสอบ แล้วดูผลลัพธ์ที่จัดรูปแบบแล้วหรือข้อผิดพลาดที่รายงาน
- หากตรวจสอบไม่ผ่าน ให้แก้ปัญหาไวยากรณ์จุดแรกที่มองเห็นแล้วลองอีกครั้ง เครื่องหมายอัญประกาศที่หายไปเพียงตัวเดียวอาจทำให้อักขระหลายตัวหลังจากนั้นถูกตีความผิด
อักขระช่องว่างที่อนุญาตระหว่างโทเค็น JSON มีสี่ชนิด ได้แก่ เว้นวรรค (U+0020), แท็บ (U+0009), ขึ้นบรรทัดใหม่ (U+000A) และกลับต้นบรรทัด (U+000D) อักขระเหล่านี้ไม่มีผลต่อข้อมูล จึงเพิ่มหรือลบได้โดยไม่ทำให้ข้อมูลเปลี่ยน แต่ช่องว่างภายในสตริงที่มีเครื่องหมายอัญประกาศถือเป็นข้อมูลและต้องคงไว้ตามเดิม เครื่องหมายวรรคตอนภายในสตริงก็จะถูกเก็บไว้เช่นกัน แต่เครื่องหมายอัญประกาศ แบ็กสแลช และอักขระควบคุมต้องใช้ลำดับหลีกที่เหมาะสม
ควรอ่านผลการตรวจสอบอย่างไร?
หากตรวจสอบสำเร็จ หมายความว่า PHP ถอดรหัสข้อมูลที่ป้อนเป็น JSON ได้ ส่วนผลล้มเหลวหมายความว่าตัวแยกวิเคราะห์ไม่สามารถตีความข้อมูลนั้นเป็นค่า JSON ที่สมบูรณ์และถูกต้องหนึ่งค่าได้ จากนั้นการจัดรูปแบบจะช่วยให้เห็นระดับการซ้อนและขอบเขตของออบเจ็กต์กับอาร์เรย์ที่ถูกต้องอย่างชัดเจน
สาเหตุที่พบบ่อยเมื่อการตรวจสอบล้มเหลว ได้แก่
- มีจุลภาคต่อท้ายก่อน } หรือ ];
- ชื่อพร็อพเพอร์ตีไม่มีเครื่องหมายอัญประกาศ เช่น {name: "Ada"};
- ใช้เครื่องหมายอัญประกาศเดี่ยวกับสตริง;
- ไม่มีจุลภาคคั่นระหว่างพร็อพเพอร์ตีหรือสมาชิกของอาร์เรย์;
- มีเครื่องหมายอัญประกาศคู่หรือแบ็กสแลชภายในสตริงโดยไม่มีอักขระหลีก;
- ออบเจ็กต์ อาร์เรย์ หรือสตริงไม่สมบูรณ์;
- ข้อมูล UTF-8 ไม่ถูกต้อง หรือมีอักขระควบคุมดิบอยู่ภายในสตริง;
- ส่วนจำนวนเต็มมีเลขศูนย์นำหน้าที่ไม่จำเป็น เช่น 01 หรือ -01 หรือมีค่าที่ JSON ไม่รองรับ เช่น NaN
ช่องว่างเปล่าไม่ใช่ JSON ที่ถูกต้อง ในทางกลับกัน ค่าเดี่ยวอย่าง 42, true, null หรือ "hello" ถือเป็น JSON ที่ถูกต้อง แม้จะไม่ใช่ออบเจ็กต์หรืออาร์เรย์ก็ตาม เนื้อหาที่ซ้อนกันลึกมากอาจเกินขีดจำกัดระดับการซ้อนของตัวถอดรหัสได้เช่นกัน
การตรวจสอบไวยากรณ์ไม่ได้ยืนยันว่าข้อมูลตรงตามข้อกำหนดของ API เอกสารหนึ่งอาจเป็น JSON ที่ถูกต้อง แต่มีสตริงในจุดที่แอปพลิเคชันต้องการตัวเลข ขาดพร็อพเพอร์ตีที่จำเป็น หรือใช้รูปแบบวันที่ซึ่งระบบไม่ยอมรับ สำหรับข้อกำหนดเหล่านี้ ให้ใช้ JSON Schema หรือการตรวจสอบในระดับแอปพลิเคชัน
ตัวอย่างการใช้งาน JSON
ข้อมูลแบบย่อที่ถูกต้อง:
{"name":"Ada","active":true,"roles":["admin","editor"]}
ผลลัพธ์ที่จัดรูปแบบแล้วจะแสดงพร็อพเพอร์ตีและสมาชิกของอาร์เรย์แยกกันตามระดับการเยื้อง โดยค่าต่างๆ ยังคงเป็นสตริง ค่าบูลีน และอาร์เรย์ตามลำดับ การจัดรูปแบบเปลี่ยนเพียงการแสดงผล ไม่ได้เปลี่ยนชนิดข้อมูลพื้นฐาน
ข้อมูลที่ไม่ถูกต้องเพราะมีจุลภาคต่อท้าย:
{"name":"Ada","active":true,}
ข้อมูลนี้ตรวจสอบไม่ผ่าน เพราะ JSON ไม่อนุญาตให้มีจุลภาคหลังพร็อพเพอร์ตีสุดท้าย ลบจุลภาคนั้นออกเพื่อให้ออบเจ็กต์ถูกต้อง
ข้อความที่มีเครื่องหมายกำกับเสียงและอักขระนอกอักษรละตินสามารถอยู่ในสตริง JSON ได้โดยตรง หากข้อมูลเป็น UTF-8 ที่ถูกต้อง ตัวอย่างเช่น {"city":"Zürich","greeting":"こんにちは"} ถือว่าถูกต้อง รูปแบบอักขระหลีกของ JSON อย่าง \u00fc ก็เป็นอีกวิธีที่ถูกต้องในการแทนอักขระ Unicode บางตัว แต่สำหรับอักขระที่อยู่นอก Basic Multilingual Plane ต้องใช้ surrogate pair
เมื่อใดที่ไม่จำเป็นต้องจัดรูปแบบ JSON?
ไม่จำเป็นต้องจัดรูปแบบ JSON หากมีเพียงเครื่องจักรที่อ่านข้อมูล และไม่มีแผนให้คนตรวจสอบหรือทบทวนผ่านระบบควบคุมเวอร์ชัน การเยื้องและการขึ้นบรรทัดใหม่ทำให้ JSON มีจำนวนไบต์ที่ต้องส่งเพิ่มขึ้น ดังนั้นการตอบกลับในระบบใช้งานจริงจึงมักส่งในรูปแบบย่อ
การลดขนาด JSON ที่ย่ออยู่แล้วก็แทบไม่มีประโยชน์ การลดขนาดซ้ำไม่อาจทำให้ชื่อพร็อพเพอร์ตีหรือค่าสตริงที่กำหนดไว้สั้นลง และการเปลี่ยนค่าเหล่านั้นย่อมทำให้ข้อมูลเปลี่ยน หากต้องการจัดการ JavaScript สำหรับนำไปใช้งานแทนข้อมูล JSON การใช้ตัวลดขนาด JS จะเหมาะสมกว่า
การจัดรูปแบบมีประโยชน์มากที่สุดเมื่อตรวจสอบโครงสร้างหรือค่าของ JSON ระหว่างการแก้จุดบกพร่อง การตรวจทานโค้ด และการตรวจสอบก่อนนำไปใช้งาน ช่วยให้เห็นระดับการซ้อนที่ไม่ตรงกัน อ่านอาร์เรย์ขนาดใหญ่ได้ง่ายขึ้น และทำให้ความแตกต่างระหว่างเวอร์ชันอ่านง่ายกว่าเมื่อนำไฟล์การกำหนดค่าเข้าสู่ Git อย่างไรก็ตาม เครื่องมือนี้ไม่ซ่อม JSON ที่ผิดรูปแบบโดยอัตโนมัติ และไม่ตัดสินว่าเดิมทีส่วนข้อมูลที่กำกวมควรมีความหมายอย่างไร
คำถามที่พบบ่อย
JSON ใส่ความคิดเห็นได้ไหม?
ไม่ได้ JSON มาตรฐานไม่มีไวยากรณ์สำหรับความคิดเห็น ดังนั้น // comment และ /* comment */ จะทำให้การตรวจสอบล้มเหลว หากไฟล์การกำหนดค่าจำเป็นต้องมีความคิดเห็น ให้ใช้รูปแบบที่รองรับความคิดเห็น หรือลบความคิดเห็นออกก่อนส่งเนื้อหาให้ตัวแยกวิเคราะห์ JSON แบบเข้มงวด
ชื่อพร็อพเพอร์ตีซ้ำกันจะถูกปฏิเสธไหม?
ไม่เสมอไป ข้อกำหนด JSON ระบุว่าชื่อสมาชิกภายในออบเจ็กต์ควรไม่ซ้ำกัน แต่ตัวแยกวิเคราะห์ไม่ได้ถือว่าชื่อซ้ำเป็นข้อผิดพลาดทางไวยากรณ์อย่างสม่ำเสมอ โดยทั่วไปการถอดรหัสด้วย PHP จะเก็บค่าที่ปรากฏภายหลังไว้ ดังนั้นหากจำเป็นต้องรักษาทุกค่าที่ปรากฏ ให้ตรวจหาชื่อซ้ำก่อนตรวจสอบความถูกต้อง
ตรวจสอบไฟล์ JSON Lines ได้ไหม?
ตรวจสอบเป็นเอกสาร JSON เดียวไม่ได้ JSON Lines หรือที่เรียกว่า NDJSON มีค่า JSON แยกกันในแต่ละบรรทัด ขณะที่ตัวแยกวิเคราะห์ JSON ปกติคาดว่าจะพบค่าระดับบนสุดเพียงหนึ่งค่า ให้ตรวจสอบทีละบรรทัด หรือแปลงระเบียนทั้งหมดเป็นอาร์เรย์ JSON เดียว
ลำดับพร็อพเพอร์ตีในออบเจ็กต์ JSON สำคัญไหม?
แอปพลิเคชันไม่ควรอาศัยลำดับพร็อพเพอร์ตีของออบเจ็กต์ JSON อาร์เรย์มีลำดับ แต่ออบเจ็กต์ใช้แทนชุดสมาชิกที่มีชื่อ และตัวแยกวิเคราะห์หรือตัวแปลงข้อมูลเป็นอนุกรมตัวอื่นอาจส่งสมาชิกเหล่านั้นออกมาในลำดับที่ต่างกัน หากลำดับมีความหมาย ให้ใส่ค่าไว้ในอาร์เรย์
ทำไมไฟล์ JSON ดูถูกต้องแต่ยังตรวจสอบไม่ผ่าน?
เครื่องหมายลำดับไบต์ที่มองไม่เห็น ข้อมูล UTF-8 ที่ผิดรูปแบบ หรืออักขระควบคุมที่ไม่มีอักขระหลีก อาจทำให้ข้อความที่ดูเหมือนถูกต้องตรวจสอบไม่ผ่านได้ การคัดลอกจากเทอร์มินัลอาจเพิ่มส่วนนำหน้า เช่น ป้ายสถานะหรือการประทับเวลาเข้ามาด้วย ตรวจสอบไบต์ดิบ หรือเปิดไฟล์ในโปรแกรมแก้ไขที่แสดงการเข้ารหัสและอักขระควบคุมได้
ตรวจสอบขั้นสุดท้าย
ก่อนนำ JSON ที่แก้ไขแล้วไปใช้งาน ให้เปรียบเทียบชนิดข้อมูลควบคู่กับค่าที่มองเห็น ตรวจสอบว่าลำดับหลีกไม่เปลี่ยนแปลง และเรียกใช้แอปพลิเคชันที่นำข้อมูลไปใช้หรือการตรวจสอบสคีมาของแอป เมื่อวิเคราะห์ข้อมูลจากบุคคลที่สาม ควรเก็บสำเนาการตอบกลับต้นฉบับที่ไม่ผ่านการแก้ไขไว้ เพื่อไม่ให้การจัดรูปแบบบดบังต้นตอของข้อผิดพลาด
เครื่องมือยอดนิยม
สร้างลายเซ็นแบบกำหนดเองของคุณได้อย่างง่ายดายและดาวน์โหลดได้อย่างสะดวก
ใช้เครื่องมือ ping ของเราเพื่อตรวจสอบสถานะและเวลาตอบสนองของเว็บไซต์ เซิร์ฟเวอร์ หรือพอร์ตใด ๆ ได้อย่างรวดเร็วและมีประสิทธิภาพ
เครื่องมือค้นหา IP ของ Digily Link ให้ข้อมูลโดยละเอียดเกี่ยวกับที่อยู่ IP ใด ๆ ใช้บริการออนไลน์ฟรีนี้เพื่อดูข้อมูล IP อย่างครบถ้วน
สร้างลิงก์ WhatsApp ฟรีได้ทันทีด้วยเครื่องมือสร้างลิงก์ WhatsApp ของเรา เพิ่มข้อความที่กำหนดเองและเริ่มแชทได้ในคลิกเดียว โดยไม่ต้องเข้าสู่ระบบหรือเขียนโค้ด