JSON คืออะไร? คู่มือฉบับสมบูรณ์สำหรับผู้เริ่มต้น
JSON คืออะไร?
JSON (JavaScript Object Notation) เป็นรูปแบบการแลกเปลี่ยนข้อมูลแบบข้อความที่มีน้ำหนักเบา ออกแบบให้ง่ายสำหรับมนุษย์ในการอ่านและเขียน และง่ายสำหรับเครื่องจักรในการ parse และสร้าง มันถูกพัฒนามาจากไวยากรณ์ JavaScript object literal แต่ได้กลายเป็นมาตรฐานที่ไม่ขึ้นกับภาษา ซึ่งได้รับการสนับสนุนจากภาษาโปรแกรมมิ่งแทบทุกภาษา
ปัจจุบัน JSON เป็นรูปแบบที่โดดเด่นสำหรับการแลกเปลี่ยนข้อมูลบนเว็บ มันขับเคลื่อน REST API, ไฟล์กำหนดค่า, ฐานข้อมูล NoSQL, การสื่อสารของแอปมือถือ และระบบที่ขับเคลื่อนด้วยข้อมูลอีกนับไม่ถ้วน ความเรียบง่ายและความแพร่หลายของมันทำให้เป็นตัวเลือกปริยายสำหรับนักพัฒนาทั่วโลก
กฎไวยากรณ์ของ JSON
JSON ปฏิบัติตามชุดกฎไวยากรณ์ที่เข้มงวดและน้อยที่สุด:
- ข้อมูลถูกจัดโครงสร้างเป็น คู่ key/value
- คีย์ทั้งหมดต้องเป็น สตริงในเครื่องหมายอัญประกาศคู่ (ไม่อนุญาตเครื่องหมายอัญประกาศเดี่ยว)
- คู่ key/value ถูกคั่นด้วยเครื่องหมายทวิภาค (
:) - คู่ถูกคั่นด้วยเครื่องหมายจุลภาค (
,) - วงเล็บปีกกา
{}ครอบ object - วงเล็บเหลี่ยม
[]ครอบ array - ไม่อนุญาตเครื่องหมายจุลภาคต่อท้าย
- ไม่อนุญาตความคิดเห็นใน JSON ที่เข้มงวด
ตัวอย่าง JSON ที่ถูกต้อง
{
"name": "Jane Smith",
"age": 28,
"isEmployed": true,
"skills": ["JavaScript", "Python", "SQL"],
"address": {
"street": "123 Main Street",
"city": "San Francisco",
"zipCode": "94102"
},
"phoneNumbers": null
}
ตัวอย่าง JSON ที่ไม่ถูกต้อง
เครื่องหมายจุลภาคต่อท้าย (ไม่ถูกต้อง):
{
"name": "Jane",
"age": 28,
}
คีย์ในเครื่องหมายอัญประกาศเดี่ยว (ไม่ถูกต้อง):
{ 'name': 'Jane' }
คีย์ไม่มีเครื่องหมายอัญประกาศ (ไม่ถูกต้อง):
{ name: "Jane" }
ชนิดข้อมูลของ JSON
JSON รองรับชนิดข้อมูลหกประเภทพอดี:
| Type | Description | Example |
|------|-------------|---------|
| String | ข้อความ Unicode ในเครื่องหมายอัญประกาศคู่ | "Hello, world!" |
| Number | จำนวนเต็มหรือทศนิยม | 42, 3.14, -7, 1.5e10 |
| Boolean | จริงหรือเท็จ | true, false |
| Null | ค่าว่างโดยเจตนา | null |
| Object | ชุด key/value ที่ไม่เรียงลำดับ | {"key": "value"} |
| Array | รายการค่าที่เรียงลำดับ | [1, 2, 3] |
สิ่งที่ขาดหายไปอย่างเห็นได้ชัด: dates, timestamps, ข้อมูลไบนารี, undefined และฟังก์ชันไม่มีการแสดงผลแบบ native ใน JSON โดยทั่วไปวันที่ถูกจัดเก็บเป็นสตริง ISO 8601 ตามแบบแผน
JSON เทียบกับรูปแบบข้อมูลอื่น
JSON อยู่เคียงข้างรูปแบบการแลกเปลี่ยนข้อมูลอื่นๆ หลายรูปแบบ แต่ละแบบมีข้อแลกเปลี่ยน:
- JSON เทียบกับ XML: JSON กระชับกว่าและ parse ได้เร็วกว่า XML รองรับ attributes, namespaces และ schemas (XSD) แต่ verbose มากกว่าอย่างมีนัยสำคัญ
- JSON เทียบกับ YAML: YAML อ่านง่ายกว่าสำหรับมนุษย์สำหรับไฟล์กำหนดค่าพร้อมรองรับความคิดเห็น แต่ไวยากรณ์ที่ไวต่อการย่อหน้าอาจเกิดข้อผิดพลาดได้ง่าย JSON พกพาได้มากกว่าและมีการตรวจสอบที่เข้มงวดกว่า
- JSON เทียบกับ CSV: CSV แบนและเป็นตารางเท่านั้น JSON รองรับลำดับชั้นแบบซ้อนและชนิดข้อมูลแบบผสม
- JSON เทียบกับ Protocol Buffers: Protobuf เล็กกว่าและเร็วกว่าสำหรับการสื่อสารระหว่างเครื่อง แต่ต้องการการกำหนด schema และมนุษย์อ่านไม่ได้
ทำไม JSON ถึงครอง Web API
หลายปัจจัยอธิบายการครองตลาดของ JSON ในการออกแบบ Web API:
- ภาษาแพร่หลาย -- ทุกภาษาหลักมี JSON parser แบบ native หรือที่ดูแลอย่างดี ขจัดความยุ่งยากในการผสานรวม
- เบราว์เซอร์รองรับโดยตรง --
JSON.parse()และJSON.stringify()ของ JavaScript ทำให้ JSON เป็นตัวเลือกที่เป็นธรรมชาติสำหรับเว็บแอปพลิเคชัน - แบนด์วิดท์น้อยที่สุด -- ไวยากรณ์ที่เบาของ JSON สร้าง payload ที่เล็กกว่า XML ลดความหน่วงและค่าใช้จ่ายแบนด์วิดท์
- มนุษย์อ่านได้ -- นักพัฒนาสามารถตรวจสอบ ดีบัก และเขียนข้อมูล JSON ด้วยมือโดยไม่ต้องใช้เครื่องมือพิเศษ
- Schema ยืดหยุ่น -- ต่างจากรูปแบบที่เข้มงวดเช่น XML Schema หรือ Protocol Buffers, JSON รองรับโครงสร้างข้อมูลที่เปลี่ยนแปลงได้โดยไม่ต้องคอมไพล์ใหม่
กรณีการใช้งาน JSON ทั่วไป
- REST และ GraphQL API -- รูปแบบมาตรฐานสำหรับ request และ response payloads
- ไฟล์กำหนดค่า -- ใช้โดยเครื่องมือเช่น ESLint, Prettier, webpack และ VS Code
- ฐานข้อมูล NoSQL -- MongoDB และ CouchDB จัดเก็บข้อมูลเป็นเอกสารคล้าย JSON
- Data serialization -- จัดโครงสร้างข้อมูลสำหรับการจัดเก็บ ถ่ายโอน หรือแคช
- การสื่อสารแบบเรียลไทม์ -- ข้อความ JSON ใน WebSocket streams และ Webhooks
- Log aggregation -- เครื่องมือ structured logging เช่น Winston, Logstash และ Datadog ใช้ JSON สำหรับรายการบันทึกที่ค้นหาและกรองได้
การตรวจสอบและการจัดรูปแบบ JSON
เมื่อทำงานกับ JSON การตรวจสอบเป็นสิ่งสำคัญ ข้อผิดพลาดทางไวยากรณ์เพียงจุดเดียว -- เครื่องหมายจุลภาคต่อท้าย เครื่องหมายอัญประกาศที่ขาดหายไป หรืออักขระที่ไม่ได้ escape -- สามารถทำลายการผสานรวม API หรือไฟล์กำหนดค่าทั้งหมด การตรวจสอบด้วยตนเองไม่น่าเชื่อถือ โดยเฉพาะสำหรับเอกสาร JSON ขนาดใหญ่
วิธีการตรวจสอบ JSON
การตรวจสอบมักทำตามขั้นตอนเหล่านี้:
- Parse สตริง JSON โดยใช้ parser มาตรฐานเช่น
JSON.parse()ใน JavaScript หรือเทียบเท่าในภาษาที่คุณเลือก - ตรวจสอบข้อผิดพลาดทางไวยากรณ์ -- parser จะ throw error ที่การละเมิดแรกพร้อมข้อความระบุตำแหน่งของปัญหา
- แก้ไขข้อผิดพลาดซ้ำๆ -- เนื่องจาก parser หยุดที่ข้อผิดพลาดแรก แก้ไขแล้วตรวจสอบใหม่จนกว่าเอกสารจะผ่าน
เครื่องมือ JSON ออนไลน์ส่วนใหญ่รวมการตรวจสอบกับการจัดรูปแบบ วาง JSON ของคุณ แล้วเครื่องมือจะตรวจสอบไวยากรณ์ทันที เน้นข้อผิดพลาดด้วยหมายเลขบรรทัดและคอลัมน์ และสร้างผลลัพธ์ที่ย่อหน้าเรียบร้อย สิ่งนี้เร็วกว่าการดีบักด้วย parser exceptions ในโค้ดของคุณอย่างมาก
เคล็ดลับสำหรับการทำงานกับ JSON
- ตรวจสอบก่อนใช้เสมอ -- อย่าคิดว่า JSON ที่เขียนด้วยมือถูกต้อง
- ใช้ linter -- เครื่องมือเช่น ESLint พร้อมปลั๊กอิน JSON จับข้อผิดพลาดก่อนถึงการผลิต
- เลือกใช้ JSON libraries -- สร้าง JSON ด้วย serialization libraries แทนการต่อสตริงเพื่อหลีกเลี่ยงข้อผิดพลาดทางไวยากรณ์ที่ละเอียดอ่อน
- ตั้งค่า Content-Type headers ที่เข้มงวด -- สำหรับ API บังคับใช้
Content-Type: application/jsonเพื่อปฏิเสธคำขอที่มีรูปแบบผิดตั้งแต่เนิ่นๆ
ใช้ เครื่องมือตรวจสอบและจัดรูปแบบ JSON ออนไลน์ฟรี เพื่อตรวจสอบไวยากรณ์ JSON ของคุณทันที ค้นหาข้อผิดพลาด และจัดรูปแบบข้อมูลของคุณให้อ่านได้ ไม่ว่าคุณจะเป็นผู้เริ่มต้นเรียนรู้พื้นฐานหรือนักพัฒนาที่มีประสบการณ์ดีบัก API ในการผลิต เครื่องมือ JSON Formatter & Validator ของเราช่วยให้คุณทำงานกับข้อมูล JSON ได้อย่างมีประสิทธิภาพ