Toolora

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

วาง JSON เพื่อจัดรูปแบบ ย่อขนาด หรือตรวจสอบความถูกต้อง หากผิดจะบอกบรรทัดและคอลัมน์ให้ ทุกอย่างทำงานในเบราว์เซอร์ของคุณ

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

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

วิธีใช้งาน

  1. วางหรือพิมพ์ JSON ลงในช่องด้านซ้าย ผลลัพธ์จะอัปเดตทันทีขณะพิมพ์ ไม่ต้องกดปุ่มก่อน
  2. เลือก “จัดรูปแบบ” เพื่อให้อ่านง่าย หรือ “ย่อขนาด” เพื่อตัดช่องว่างที่ไม่จำเป็นออกทั้งหมด
  3. เลือกการเยื้องที่ต้องการ: 2 ช่องว่าง 4 ช่องว่าง หรือ Tab
  4. หาก JSON ผิดรูปแบบ ระบบจะบอกบรรทัดและคอลัมน์ที่มีปัญหา เพื่อให้ไปแก้ได้ตรงจุด
  5. คัดลอกผลลัพธ์ไปใช้ต่อ หรือดาวน์โหลดเป็นไฟล์ .json

ข้อมูลของคุณไม่ออกจากเบราว์เซอร์

การประมวลผลเกิดขึ้นในเครื่องของคุณด้วยตัวแปล JSON ของเบราว์เซอร์เอง ข้อมูลที่วางไม่ถูกส่งไปที่ใด ซึ่งสำคัญมากเมื่อเอกสารที่คุณกำลังไล่หาปัญหาเป็นผลลัพธ์จาก API ที่อาจมีโทเคน ข้อมูลลูกค้า หรือสิ่งที่คุณคงไม่อยากวางลงบนเซิร์ฟเวอร์ของคนอื่น และเมื่อหน้าเว็บโหลดเสร็จแล้ว เครื่องมือนี้ยังใช้งานได้แม้ไม่มีอินเทอร์เน็ต

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

ทำไมใส่จุลภาคตัวสุดท้ายแล้วขึ้นว่าผิด ทั้งที่ JavaScript ใช้ได้
JavaScript อนุญาตให้มีจุลภาคตัวสุดท้ายในอ็อบเจกต์และอาร์เรย์มานานแล้ว แต่ JSON เป็นคนละรูปแบบที่เข้มงวดกว่าและไม่เคยรับกฎข้อนี้เข้ามา `{"a": 1,}` จึงถูกต้องในภาษา JS แต่ผิดในมาตรฐาน JSON นี่เป็นสาเหตุอันดับหนึ่งที่ไฟล์ตั้งค่าซึ่งดูปกติกลับถูกปฏิเสธ
ใส่คอมเมนต์ใน JSON ได้ไหม
ไม่ได้ JSON ไม่มีไวยากรณ์สำหรับคอมเมนต์เลย ทั้ง `//` และ `/* */` รูปแบบที่ใส่คอมเมนต์ได้อย่าง JSON5 และ JSONC (แบบที่ VS Code ใช้กับไฟล์ตั้งค่า) เป็นคนละภาษาที่บังเอิญหน้าตาคล้ายกัน หากไฟล์ของคุณจำเป็นต้องมีคอมเมนต์ แสดงว่ามันไม่ใช่ JSON และตัวแปลที่เข้มงวดจะปฏิเสธมัน
ทำไมเลข ID ยาว ๆ ของผมเปลี่ยนค่า
ตัวเลขใน JSON จะกลายเป็นชนิด double ของ JavaScript ซึ่งเก็บจำนวนเต็มได้แม่นยำถึง 9,007,199,254,740,991 เท่านั้น เกินกว่านั้นตัวเลขท้าย ๆ จะถูกปัดโดยไม่มีการแจ้งเตือน ID จากฐานข้อมูลที่ยาว 20 หลักจึงอาจเพี้ยนได้ เครื่องมือทุกตัวที่ทำงานบน JavaScript มีข้อจำกัดนี้เหมือนกัน รวมถึงเครื่องมือนี้ด้วย หากต้องใช้ ID ที่ยาวขนาดนั้น ควรส่งเป็นสตริงแทน
ใช้ NaN, Infinity หรือ undefined ได้หรือไม่
ไม่ได้ทั้งหมด JSON มีเพียงสตริง ตัวเลข บูลีน null อ็อบเจกต์ และอาร์เรย์ ค่า `NaN` กับ `Infinity` เป็นตัวเลขที่ถูกต้องในภาษา JavaScript แต่ไม่ใช่ JSON ส่วน `undefined` ไม่มีค่าเทียบเคียงใน JSON เลย โดย `JSON.stringify` จะตัดคุณสมบัติที่มีค่านี้ทิ้งไปแทนที่จะเข้ารหัสมัน
การจัดรูปแบบจะสลับลำดับคีย์หรือไม่
ไม่ ลำดับคีย์จะคงเดิมตามที่เขียนไว้ทุกประการ มาตรฐาน JSON ระบุว่าลำดับคีย์ในอ็อบเจกต์ไม่มีความหมาย แต่ในทางปฏิบัติตัวแปลกระแสหลักทุกตัวรักษาลำดับตามที่ใส่เข้ามา ไฟล์ที่จัดรูปแบบแล้วจึงยังเทียบ diff กับต้นฉบับได้ง่าย
วาง JSON จากแหล่งที่ไม่น่าเชื่อถือปลอดภัยไหม
ปลอดภัย การแปลง JSON ไม่ได้รันโค้ดในนั้น ซึ่งเป็นเหตุผลทั้งหมดที่มี `JSON.parse` แทนการใช้ `eval` คีย์ชื่อ `__proto__` จะถูกมองเป็นข้อมูลธรรมดาและไม่ไปแก้ไข prototype ของอ็อบเจกต์ใด ส่วนผลลัพธ์ก็ถูกแสดงเป็นข้อความเท่านั้น ไม่เคยถูกแทรกเป็น HTML