5 ข้อผิดพลาด JSON ที่พบได้บ่อยที่สุด (และวิธีแก้ไข)

By ทีมงาน JSONValidator.dev 2025-07-04

บทนำ: ทำไมข้อผิดพลาด JSON จึงพบได้บ่อย

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

1. เครื่องหมายจุลภาคท้าย (Trailing Comma)

ใน JSON ห้ามใส่จุลภาคหลังรายการสุดท้ายในออบเจ็กต์หรืออาเรย์ นี่เป็นข้อผิดพลาดที่พบบ่อยเมื่อแก้ไขด้วยมือ

Before:
{
  "name": "Alice",
  "age": 30,
}
After:
{
  "name": "Alice",
  "age": 30
}
คำแนะนำ: โปรแกรมแก้ไขโค้ดหลายตัว (รวมถึงเครื่องมือ JSON ออนไลน์ของเรา) จะช่วยเน้นหรือแก้ไขจุลภาคท้ายให้อัตโนมัติ

2. เครื่องหมายคำพูดเดี่ยว vs คู่

JSON กำหนดให้กุญแจและค่าประเภทสตริงต้องใช้เครื่องหมายคำพูดคู่เท่านั้น เครื่องหมายคำพูดเดี่ยวถือว่าไม่ถูกต้อง

Before:
{
  'name': 'Bob'
}
After:
{
  "name": "Bob"
}
ห้ามใช้เครื่องหมายคำพูดเดี่ยว แม้ว่าภาษาการเขียนโปรแกรมของคุณจะรองรับก็ตาม! ไวยากรณ์ JSON เข้มงวดกว่าภาษา JavaScript หรือ Python

3. ตัวอักษรที่ไม่ได้หนีบ (Unescaped Characters)

ตัวอักษรบางชนิด เช่น การขึ้นบรรทัดใหม่, แท็บ หรือเครื่องหมายคำพูดภายในสตริง ต้องถูกหนีบด้วยเครื่องหมายแบ็กสแลช (\) อย่างถูกต้อง

Before:
{
  "note": "This will break: "hello""
}
After:
{
  "note": "This will work: \"hello\""
}
ถ้าคุณเจอข้อความ 'unexpected token' หรือ 'unterminated string' ให้ตรวจสอบว่ามีการหนีบเครื่องหมายที่ขาดหายในข้อมูลของคุณหรือไม่

4. วงเล็บหรือปีกกาขาดหาย

วงเล็บหรือปีกกาที่เปิดต้องมีการปิดให้ครบถ้วน การขาดหรือเกินวงเล็บจะทำให้ JSON ไม่ถูกต้องเสมอ

Before:
{
  "name": "Eve",
  "items": [1, 2, 3
}
After:
{
  "name": "Eve",
  "items": [1, 2, 3]
}
ใช้ตัวตรวจสอบ JSON ออนไลน์เพื่อตรวจจับวงเล็บขาดหรือเกินได้อย่างรวดเร็ว

5. ข้อผิดพลาดประเภทข้อมูล

ตัวเลข, ค่าบูลีน และ null ไม่ควรใส่ในเครื่องหมายคำพูด เช่น 42 ถูกต้อง แต่ "42" เป็นสตริง ไม่ใช่ตัวเลข

  • "true" (สตริง) ไม่เหมือนกับ true (บูลีน)
  • "null" (สตริง) ไม่เหมือนกับ null (ค่าพิเศษ)
  • "42" (สตริง) ไม่เหมือนกับ 42 (ตัวเลข)
Before:
{
  "age": "42",
  "active": "true"
}
After:
{
  "age": 42,
  "active": true
}

เครื่องมือช่วยเหลือของเรา

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