UltKit
รูปภาพ11
PDF13
เอกสารและข้อมูล7
วิดีโอ6
เสียง4
เครื่องมืออื่น ๆ22

จัดรูปแบบและตรวจสอบ JSON

วาง JSON เพื่อจัดรูปแบบให้อ่านง่าย ย่อให้กะทัดรัด หรือเรียงคีย์ หากแยกวิเคราะห์ไม่ได้ เครื่องมือจะแสดงบรรทัดและคอลัมน์ที่ตัวแยกวิเคราะห์หยุดทำงาน พร้อมตัวชี้ใต้จุดที่มีปัญหา จึงหาเครื่องหมายจุลภาคที่ขาดหายในผลลัพธ์ยาว 3,000 บรรทัดได้ภายในไม่กี่วินาที

รูปแบบผลลัพธ์

0 ตัวอักษร · 0 คำ · 0 บรรทัด

0 ตัวอักษร · 0 คำ · 0 บรรทัด

ทำงานทั้งหมดภายในแท็บเบราว์เซอร์นี้ ข้อความของคุณจะไม่ถูกอัปโหลดหรือจัดเก็บไว้

ประเภทค่าใน JSON

RFC 8259 อนุญาตเฉพาะค่าเหล่านี้เท่านั้น อ็อบเจกต์และอาร์เรย์ซ้อนกันได้ ส่วนค่าอื่นทั้งหมดเป็นค่าปลายทาง

ประเภทตัวอย่างกฎ
อ็อบเจกต์ (Object){"id": 7, "tags": ["a"]}คีย์ต้องเป็นสตริงในเครื่องหมายอัญประกาศคู่ สมาชิกคั่นด้วยจุลภาคและห้ามมีจุลภาคต่อท้าย
อาร์เรย์ (Array)[1, "two", null]รายการค่าใดก็ได้ที่มีลำดับ ผสมหลายประเภทได้
สตริง (String)"caf\u00e9 \"quoted\""ใช้อัญประกาศคู่เท่านั้น อักขระควบคุมต้อง escape และ \u escape ใช้เลขฐานสิบหกสี่หลัก
ตัวเลข (Number)-12.5e3เลขฐานสิบเท่านั้น: มีเครื่องหมายลบได้ ห้ามมีศูนย์นำหน้า มีส่วนทศนิยมและเลขชี้กำลังได้ ไม่รองรับ NaN หรือ Infinity
ค่าคงที่ true, false, nulltrueตัวพิมพ์เล็ก ไม่มีอัญประกาศ

สิ่งที่ตัวแยกวิเคราะห์ปฏิเสธ

ข้อมูลเข้าแต่ละรายการด้านล่างถูกส่งให้ JSON.parse ตัวเดียวกับที่เครื่องมือจัดรูปแบบใช้ ในขณะที่สร้างหน้านี้

ข้อมูลเข้าปัญหาJSON.parse
{"a": 1,}จุลภาคต่อท้ายปฏิเสธ
{'a': 1}สตริงในอัญประกาศเดี่ยวปฏิเสธ
{"a": 1 /* note */}คอมเมนต์ปฏิเสธ
{a: 1}คีย์ที่ไม่มีอัญประกาศปฏิเสธ
{"n": NaN}NaN ไม่ใช่ตัวเลขใน JSONปฏิเสธ
{"n": 012}ศูนย์นำหน้าปฏิเสธ
{"n": 0x1F}ตัวเลขฐานสิบหกปฏิเสธ

การ escape ในสตริง JSON

อักขระการเขียนใน JSON
อัญประกาศคู่"\""
แบ็กสแลช"\\"
ขึ้นบรรทัดใหม่ (line feed)"\n"
แท็บ"\t"
ปัดแคร่ (carriage return)"\r"
อักขระควบคุม U+0001"\u0001"
สแลช (escape หรือไม่ก็ได้)"/"
ตัวอักษรนอก ASCII (ไม่ต้อง escape)"é"

กฎที่เอกสาร JSON ที่ถูกต้องต้องปฏิบัติตาม

JSON กำหนดไว้ใน RFC 8259 (เนื้อหาเหมือนกับ ECMA-404) เอกสาร JSON คือค่าเดียว ซึ่งอาจเป็นออบเจ็กต์ อาร์เรย์ สตริง ตัวเลข true, false หรือ null คีย์ของออบเจ็กต์ต้องเป็นสตริงในเครื่องหมายคำพูดคู่เสมอ สตริงใช้ได้เฉพาะเครื่องหมายคำพูดคู่ และต้องใส่เครื่องหมายหลีกให้กับเครื่องหมายคำพูด แบ็กสแลช และอักขระควบคุมทุกตัวที่ต่ำกว่า U+0020 ดังนั้นแท็บและการขึ้นบรรทัดใหม่ภายในสตริงจึงต้องเขียนเป็น \t และ \n นอกจากนี้ RFC 8259 ยังกำหนดให้ JSON ที่แลกเปลี่ยนกันระหว่างระบบใช้การเข้ารหัส UTF-8

ตัวเลขต้องเป็นเลขฐานสิบ ห้ามขึ้นต้นด้วยศูนย์ ห้ามใช้เลขฐานสิบหก ห้ามใช้ NaN หรือ Infinity และห้ามมีเครื่องหมายบวกนำหน้า ฟอร์แมตนี้ไม่มีคอมเมนต์และไม่อนุญาตให้มีเครื่องหมายจุลภาคท้ายรายการ สองข้อหลังนี้เป็นสาเหตุของข้อผิดพลาดส่วนใหญ่ในการใช้งานจริง เพราะออบเจ็กต์ลิเทอรัลของ JavaScript, JSON5 และไฟล์คอนฟิกจำนวนมากอนุญาตทั้งสองอย่าง ตารางอ้างอิงด้านล่างสร้างขึ้นจากการป้อนข้อผิดพลาดที่พบบ่อยแต่ละแบบให้พาร์เซอร์ตัวเดียวกับที่เครื่องมือจัดรูปแบบนี้ใช้

จัดรูปแบบให้อ่านง่าย ย่อ และเรียงคีย์

การจัดรูปแบบให้อ่านง่าย (pretty-print) จะเพิ่มการขึ้นบรรทัดใหม่และการเยื้องเพื่อให้เห็นโครงสร้างชัดเจน การเว้นวรรคสองตัวเป็นรูปแบบที่พบบ่อยที่สุดในโปรเจกต์ JavaScript ส่วนการเว้นวรรคสี่ตัวเป็นตัวเลือกทั่วไปของ json.dumps(indent=4) ใน Python และการใช้แท็บช่วยให้ผู้อ่านเลือกความกว้างเองได้ การย่อ (minify) จะลบช่องว่างที่ไม่จำเป็นทั้งหมด ทำให้ข้อมูล API มีขนาดเล็กลง และทำให้เอกสารอยู่ในบรรทัดเดียวสำหรับล็อกหรือตัวแปรสภาพแวดล้อม

การเรียงคีย์ (Sort keys) จะเรียงสมาชิกของทุกออบเจ็กต์ตามตัวอักษรแบบเรียกซ้ำ โดยนิยามแล้วออบเจ็กต์ JSON ไม่มีลำดับ การเรียงจึงไม่เปลี่ยนความหมาย แต่ช่วยให้เปรียบเทียบเอกสารจากสองระบบได้ง่ายขึ้นมาก โปรดทราบว่าการพาร์สจะแปลงตัวเลขเป็นค่า double ของ JavaScript จำนวนเต็มที่มากกว่า 2^53 (9,007,199,254,740,992) เช่น ID ของฐานข้อมูลบางตัว จะสูญเสียความแม่นยำเมื่อจัดรูปแบบใหม่ จึงควรเก็บค่าเหล่านั้นเป็นสตริง

แปลง JSON เป็นฟอร์แมตอื่น

เอกสารที่จัดรูปแบบแล้วอ่านง่ายขึ้น แต่บางครั้งคุณอาจต้องการในรูปแบบอื่น อาร์เรย์ของออบเจ็กต์สามารถกลายเป็นสเปรดชีตได้ด้วย แปลง JSON เป็น CSV และเครื่องมือแปลงไฟล์ข้อมูลช่วยแปลงทั้งไฟล์ระหว่าง JSON, XML, YAML และ CSV

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

ทำไมเครื่องมือจัดรูปแบบจึงไม่รับ JSON ที่มีคอมเมนต์
JSON มาตรฐานไม่มีไวยากรณ์สำหรับคอมเมนต์ RFC 8259 ละไว้โดยเจตนา ให้ลบคอมเมนต์ออก หรือเก็บไฟล์เป็น JSONC หรือ JSON5 หากเครื่องมือที่อ่านไฟล์รองรับฟอร์แมตเหล่านั้น
"Unexpected token" ในข้อผิดพลาด JSON หมายความว่าอะไร
พาร์เซอร์พบอักขระที่ไม่สามารถอยู่ในตำแหน่งนั้นได้ เช่น เครื่องหมายคำพูดเดี่ยว เครื่องหมายจุลภาคท้ายรายการก่อน } หรือคีย์ที่ไม่มีเครื่องหมายคำพูด บรรทัดและคอลัมน์ที่แสดงจะชี้ไปที่อักขระนั้น
การเรียงคีย์ทำให้ข้อมูลเปลี่ยนไปหรือไม่
ไม่ ลำดับสมาชิกของออบเจ็กต์ไม่มีความหมายใน JSON เอกสารที่เรียงคีย์แล้วจึงมีความหมายเทียบเท่าเดิม ส่วนลำดับของอาร์เรย์มีความหมายและจะไม่ถูกเปลี่ยนเลย
ทำไมตัวเลขยาว ๆ จึงเปลี่ยนไปหลังจัดรูปแบบ
JavaScript เก็บตัวเลขเป็นจำนวนทศนิยม 64 บิต ซึ่งแสดงจำนวนเต็มได้แม่นยำถึง 2^53 เท่านั้น ID ที่ใหญ่กว่านั้นจะถูกปัดเมื่อพาร์ส ให้ส่งเป็นสตริงเพื่อเก็บทุกหลักไว้ครบ
จัดรูปแบบไฟล์ JSON โดยไม่ต้องวางข้อความได้หรือไม่
เปิดไฟล์ด้วยโปรแกรมแก้ไขข้อความใดก็ได้ เลือกทั้งหมดแล้ววางที่นี่ ไฟล์ขนาดใหญ่มากระดับหลายสิบเมกะไบต์อาจทำให้แท็บทำงานช้าขณะที่ช่องข้อความแสดงผล