วิธีตรวจสอบ JSON: คู่มือฉบับสมบูรณ์และตัวอย่าง
JSON (JavaScript Object Notation) เป็นรากฐานของ Web API สมัยใหม่ ไฟล์การกำหนดค่า และการแลกเปลี่ยนข้อมูล แต่ JSON ที่ไม่ถูกต้องอาจทำให้แอปพลิเคชันล่ม การรวม API ล้มเหลว และทำให้เสียเวลาหลายชั่วโมงในการดีบัก คู่มือนี้จะพาคุณไปรู้ทุกสิ่งที่จำเป็นในการตรวจสอบ JSON ตั้งแต่การตรวจสอบไวยากรณ์พื้นฐานไปจนถึงการตรวจสอบ Schema ขั้นสูงพร้อมตัวอย่างจริง
ทำไมการตรวจสอบ JSON จึงสำคัญ
JSON ที่ไม่ถูกต้องเป็นหนึ่งในแหล่งที่มาของข้อผิดพลาดที่พบบ่อยที่สุดในเว็บแอปพลิเคชัน เครื่องหมายจุลภาคที่วางผิดที่ คีย์ที่ไม่มีเครื่องหมายอัญประกาศ หรือเครื่องหมายจุลภาคต่อท้ายอาจทำให้ JSON.parse() โยน SyntaxError ซึ่งทำให้ไปป์ไลน์ข้อมูลทั้งหมดล้มเหลว การตรวจสอบสามารถจับข้อผิดพลาดเหล่านี้ได้ตั้งแต่เนิ่นๆ ก่อนที่มันจะแพร่กระจายไปยังระบบและทำให้เกิดความเสียหายตามมา
นอกเหนือจากความถูกต้องทางไวยากรณ์แล้ว การตรวจสอบยังช่วยให้มั่นใจว่าข้อมูล JSON สอดคล้องกับโครงสร้างที่คาดหวัง API อาจส่งคืน JSON ที่ถูกต้องแต่ขาดฟิลด์ที่จำเป็น มีประเภทข้อมูลที่ผิด หรือค่าอยู่นอกช่วงที่ยอมรับได้ การตรวจสอบ Schema จะแก้ไขปัญหาเชิงโครงสร้างเหล่านี้
กฎไวยากรณ์ JSON
ก่อนที่จะเจาะลึกเครื่องมือตรวจสอบ สิ่งสำคัญคือต้องเข้าใจกฎที่ทำให้ JSON ถูกต้อง JSON มีไวยากรณ์ที่เข้มงวดซึ่งกำหนดโดย RFC 8259 แม้แต่การละเมิดเพียงอักขระเดียวก็ทำให้เอกสารทั้งหมดไม่ถูกต้อง
สตริงต้องใช้เครื่องหมายอัญประกาศคู่
ค่าสตริงและคีย์ออบเจ็กต์ทั้งหมดต้องอยู่ในเครื่องหมายอัญประกาศคู่ เครื่องหมายอัญประกาศเดี่ยวไม่ใช่ตัวคั่นสตริง JSON ที่ถูกต้อง นี่เป็นข้อผิดพลาดที่พบบ่อยสำหรับนักพัฒนาที่มาจาก JavaScript
// Invalid - single quotes
{'name': 'Alice', 'age': 30}
// Valid - double quotes
{"name": "Alice", "age": 30}คีย์ของออบเจ็กต์ต้องอยู่ในเครื่องหมายอัญประกาศ
ต่างจาก JavaScript object literal ตรงที่ JSON ต้องการให้คีย์ออบเจ็กต์ทั้งหมดอยู่ในเครื่องหมายอัญประกาศคู่ คีย์ที่ไม่มีเครื่องหมายอัญประกาศเป็นข้อผิดพลาดทางไวยากรณ์
// Invalid - unquoted keys
{name: "Alice", age: 30}
// Valid - quoted keys
{"name": "Alice", "age": 30}ไม่อนุญาตให้มีเครื่องหมายจุลภาคต่อท้าย
JSON ไม่อนุญาตให้มีเครื่องหมายจุลภาคหลังรายการสุดท้ายในออบเจ็กต์หรืออาร์เรย์ นี่เป็นข้อผิดพลาดทั่วไปอีกประการหนึ่ง โดยเฉพาะเมื่อแก้ไข JSON ด้วยตนเอง
// Invalid - trailing comma
{
"name": "Alice",
"age": 30,
}
// Valid - no trailing comma
{
"name": "Alice",
"age": 30
}ไม่รองรับความคิดเห็น
JSON ไม่รองรับความคิดเห็น ความคิดเห็นแบบบรรทัดเดียว // และความคิดเห็นแบบหลายบรรทัด /* */ ไม่ถูกต้องใน JSON หากคุณต้องการเอกสารประกอบ ให้ใช้ไฟล์แยกต่างหากหรือรูปแบบอย่าง JSONC
ข้อผิดพลาดในการตรวจสอบ JSON ที่พบบ่อย
การเข้าใจข้อผิดพลาดที่พบบ่อยที่สุดช่วยให้คุณค้นหาและแก้ไขได้อย่างรวดเร็ว นี่คือข้อผิดพลาดที่คุณจะพบบ่อยที่สุด:
- โทเค็นที่ไม่คาดคิด: มักเกิดจากเครื่องหมายอัญประกาศเดี่ยว คีย์ที่ไม่มีเครื่องหมายอัญประกาศ หรือเครื่องหมายจุลภาคต่อท้าย ข้อความข้อผิดพลาดมีตำแหน่งที่การแยกวิเคราะห์ล้มเหลว
- JSON input สิ้นสุดโดยไม่คาดคิด: สตริง JSON ไม่สมบูรณ์หรือว่างเปล่า ซึ่งมักเกิดขึ้นเมื่อคำขอเครือข่ายส่งคืนการตอบสนองที่ว่างเปล่า
- อักขระที่ไม่ใช่ช่องว่างที่ไม่คาดคิด: เนื้อหาเพิ่มเติมหลังจากค่า JSON หลัก เช่น ออบเจ็กต์ที่สองที่ไม่ได้อยู่ในอาร์เรย์
- ตัวเลขที่ไม่ถูกต้อง: ตัวเลขที่มีศูนย์นำหน้า (ยกเว้น 0 เอง) สัญกรณ์เลขฐานสิบหก หรือค่า NaN / Infinity ไม่ใช่ JSON ที่ถูกต้อง
การตรวจสอบ JSON ใน JavaScript
วิธีที่ง่ายที่สุดในการตรวจสอบ JSON ใน JavaScript คือการห่อ JSON.parse() ในบล็อก try-catch หาก JSON ไม่ถูกต้อง เมธอดจะโยน SyntaxError
function validateJSON(jsonString) {
try {
JSON.parse(jsonString);
return { valid: true };
} catch (error) {
return {
valid: false,
error: error.message
};
}
}
const result = validateJSON('{"name": "Alice"}');
console.log(result);
// { valid: true }
const badResult = validateJSON("{'name': 'Alice'}");
console.log(badResult);
// { valid: false, error: "Unexpected token '..." }การตรวจสอบ JSON ใน Python
Python มีโมดูล json ซึ่งรวมถึง json.loads() สำหรับการแยกวิเคราะห์สตริง JSON เช่นเดียวกับ JavaScript JSON ที่ไม่ถูกต้องจะทำให้เกิด json.JSONDecodeError พร้อมข้อมูลตำแหน่งโดยละเอียด
import json
def validate_json(json_string):
try:
json.loads(json_string)
return {"valid": True}
except json.JSONDecodeError as e:
return {
"valid": False,
"error": str(e),
"line": e.lineno,
"column": e.colno
}
result = validate_json('{"name": "Alice"}')
print(result)
# {'valid': True}การตรวจสอบ JSON Schema
การตรวจสอบไวยากรณ์บอกคุณได้แค่ว่า JSON มีรูปแบบที่ถูกต้องหรือไม่ JSON Schema ช่วยให้คุณกำหนดโครงสร้างที่คาดหวังและตรวจสอบข้อมูลเทียบกับมัน Schema ระบุฟิลด์ที่จำเป็น ประเภทข้อมูล ช่วงค่า รูปแบบสตริง และโครงสร้างออบเจ็กต์ที่ซ้อนกัน
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["name", "email"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"email": { "type": "string", "format": "email" },
"age": { "type": "integer", "minimum": 0 }
}
}ตัวตรวจสอบ JSON Schema ที่นิยมได้แก่ Ajv สำหรับ JavaScript, jsonschema สำหรับ Python และ json-schema-validator สำหรับ Java ไลบรารีเหล่านี้ตรวจสอบข้อมูล JSON เทียบกับ Schema ของคุณและสร้างข้อความข้อผิดพลาดโดยละเอียดสำหรับการละเมิดแต่ละครั้ง
เครื่องมือตรวจสอบ JSON ออนไลน์
เมื่อคุณต้องการตรวจสอบเอกสาร JSON อย่างรวดเร็วโดยไม่ต้องเขียนโค้ด ตัวตรวจสอบออนไลน์เป็นตัวเลือกที่เร็วที่สุด พวกมันให้ข้อเสนอแนะทันทีพร้อมการเน้นข้อผิดพลาดและหมายเลขบรรทัด
แนวทางปฏิบัติที่ดีที่สุดในการตรวจสอบ JSON
- ตรวจสอบตั้งแต่เนิ่นๆ: ตรวจสอบ JSON ที่ขอบเขตของระบบ (เช่น API endpoints และฟังก์ชันนำเข้าไฟล์) ก่อนที่ข้อมูลจะเข้าสู่ตรรกะทางธุรกิจ
- ใช้การตรวจสอบ Schema: นอกเหนือจากไวยากรณ์แล้ว ให้ใช้ JSON Schema เพื่อตรวจสอบโครงสร้างข้อมูลเพื่อจับฟิลด์ที่ขาดหายไป ประเภทที่ผิดพลาด และค่าที่อยู่นอกช่วง
- ให้ข้อความข้อผิดพลาดที่ชัดเจน: เมื่อการตรวจสอบล้มเหลว ให้รวมเส้นทางฟิลด์ ประเภทที่คาดหวัง และค่าจริงเพื่อช่วยให้ผู้ใช้แก้ไขปัญหาได้อย่างรวดเร็ว
- ตรวจสอบทั้งฝั่งไคลเอนต์และเซิร์ฟเวอร์: การตรวจสอบฝั่งไคลเอนต์ให้ข้อเสนอแนะทันที ในขณะที่การตรวจสอบฝั่งเซิร์ฟเวอร์ช่วยให้มั่นใจในความปลอดภัยและความสมบูรณ์ของข้อมูล
- ทำให้การตรวจสอบเป็นอัตโนมัติใน CI/CD: ใช้เครื่องมืออย่าง ajv-cli หรือ jsonschema เพื่อตรวจสอบ JSON fixtures และไฟล์การกำหนดค่าในไปป์ไลน์การสร้าง
- บันทึกข้อผิดพลาดในการตรวจสอบ: บันทึกความล้มเหลวในการตรวจสอบพร้อมบริบทเพื่อระบุรูปแบบและแก้ไขสาเหตุต้นตอในผู้ผลิตข้อมูล
พร้อมที่จะตรวจสอบข้อมูล JSON ของคุณแล้วหรือยัง? ลองใช้ตัวตรวจสอบ JSON ออนไลน์ฟรีของเราที่ให้การตรวจจับข้อผิดพลาดทันทีและข้อเสนอแนะโดยละเอียด
ตรวจสอบ JSON ทันทีคำถามที่พบบ่อย
การตรวจสอบ JSON คืออะไร?
การตรวจสอบ JSON เป็นกระบวนการตรวจสอบว่าเอกสาร JSON สอดคล้องกับกฎไวยากรณ์ที่ถูกต้องและเป็นไปตาม Schema ที่กำหนดไว้หรือไม่ การตรวจสอบไวยากรณ์ช่วยให้มั่นใจว่า JSON มีรูปแบบที่ถูกต้อง ในขณะที่การตรวจสอบ Schema ช่วยให้มั่นใจว่าโครงสร้างข้อมูลตรงกับประเภทที่คาดหวัง ฟิลด์ที่จำเป็น และข้อจำกัดของค่า
ข้อผิดพลาด JSON ที่พบบ่อยที่สุดคืออะไร?
ข้อผิดพลาด JSON ที่พบบ่อยที่สุดรวมถึง: เครื่องหมายจุลภาคต่อท้ายหลังรายการสุดท้าย การใช้เครื่องหมายอัญประกาศเดี่ยวแทนอัญประกาศคู่ คีย์ออบเจ็กต์ที่ไม่มีเครื่องหมายอัญประกาศ ความคิดเห็น (ไม่อนุญาตใน JSON) และค่า undefined หรือ NaN ข้อผิดพลาดเหล่านี้ทำให้ JSON.parse() โยน SyntaxError
จะตรวจสอบ JSON ใน JavaScript ได้อย่างไร?
ใช้ JSON.parse() ที่ห่อในบล็อก try-catch หาก JSON ไม่ถูกต้อง JSON.parse() จะโยน SyntaxError ซึ่งคุณสามารถจับและจัดการได้ สำหรับการตรวจสอบ Schema ให้ใช้ไลบรารีอย่าง Ajv ที่ดำเนินการตรวจสอบ JSON Schema
JSON Schema คืออะไร?
JSON Schema เป็นคำศัพท์ที่ช่วยให้คุณใส่คำอธิบายประกอบและตรวจสอบเอกสาร JSON มันกำหนดโครงสร้าง ประเภท ฟิลด์ที่จำเป็น ช่วงค่า รูปแบบสตริง และโครงสร้างออบเจ็กต์ที่ซ้อนกัน คุณสามารถใช้มันเพื่อตรวจสอบข้อมูล JSON ว่าเป็นไปตามรูปแบบที่ระบุนอกเหนือจากความถูกต้องทางไวยากรณ์พื้นฐาน
สามารถตรวจสอบ JSON ออนไลน์ได้หรือไม่?
ใช่ เครื่องมือตรวจสอบ JSON ออนไลน์อย่าง ToolHub JSON validator ช่วยให้คุณวางข้อมูล JSON และดูได้ทันทีว่าถูกต้องหรือไม่ พร้อมข้อความข้อผิดพลาดโดยละเอียดที่แสดงบรรทัดและคอลัมน์ที่แน่นอนที่เกิดข้อผิดพลาด