← กลับไปคู่มือ

JSON คืออะไร? คู่มือฉบับสมบูรณ์สำหรับผู้เริ่มต้น

· แท็ก: json, what-is-json, json-syntax, json-data-types, web-development

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:

  1. ภาษาแพร่หลาย -- ทุกภาษาหลักมี JSON parser แบบ native หรือที่ดูแลอย่างดี ขจัดความยุ่งยากในการผสานรวม
  2. เบราว์เซอร์รองรับโดยตรง -- JSON.parse() และ JSON.stringify() ของ JavaScript ทำให้ JSON เป็นตัวเลือกที่เป็นธรรมชาติสำหรับเว็บแอปพลิเคชัน
  3. แบนด์วิดท์น้อยที่สุด -- ไวยากรณ์ที่เบาของ JSON สร้าง payload ที่เล็กกว่า XML ลดความหน่วงและค่าใช้จ่ายแบนด์วิดท์
  4. มนุษย์อ่านได้ -- นักพัฒนาสามารถตรวจสอบ ดีบัก และเขียนข้อมูล JSON ด้วยมือโดยไม่ต้องใช้เครื่องมือพิเศษ
  5. 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

การตรวจสอบมักทำตามขั้นตอนเหล่านี้:

  1. Parse สตริง JSON โดยใช้ parser มาตรฐานเช่น JSON.parse() ใน JavaScript หรือเทียบเท่าในภาษาที่คุณเลือก
  2. ตรวจสอบข้อผิดพลาดทางไวยากรณ์ -- parser จะ throw error ที่การละเมิดแรกพร้อมข้อความระบุตำแหน่งของปัญหา
  3. แก้ไขข้อผิดพลาดซ้ำๆ -- เนื่องจาก 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 ได้อย่างมีประสิทธิภาพ