JSON คืออะไร? คู่มือภาษาง่าย พร้อมตัวอย่าง
JSON (JavaScript Object Notation) คือรูปแบบข้อความธรรมดาสำหรับเขียนข้อมูลที่มีโครงสร้าง เช่น ลูกค้า คำสั่งซื้อ หรือรายการสินค้า โดยจับคู่ชื่อกับค่า ทั้งคนอ่านและโปรแกรมสร้างหรือแยกวิเคราะห์ได้ง่าย เมื่อแอปและบริการแลกเปลี่ยนข้อมูลกันบนเว็บ JSON เป็นรูปแบบที่พบมากที่สุดด้วยห่างมาก
ทำไม JSON จึงสำคัญเมื่อสร้างแอปด้วย AI
คุณจะเจอ JSON บ่อยมาก แม้ไม่เคยเขียนโค้ดเลย:
- API เมื่อหน้าจอของแอปโหลดข้อมูลจาก backend หรือเมื่อ backend ของคุณเรียกบริการชำระเงิน อีเมล หรือ AI ข้อมูลมักเดินทางในรูปแบบ JSON ดูAPI คืออะไร
- ไฟล์การตั้งค่า ไฟล์คอนฟิกของโปรเจกต์หลายไฟล์เป็น JSON เช่น
package.jsonซึ่งระบุ dependency ของโปรเจกต์ JavaScript - ฐานข้อมูล Postgres เก็บ JSON ในคอลัมน์ได้ (ชนิด
jsonb) สำหรับข้อมูลที่ไม่พอดีกับแถวและคอลัมน์แบบปกติ ดูPostgres คืออะไร - ผลลัพธ์จาก AI เมื่ออยากให้โมเดล AI ส่งอะไรบางอย่างที่โปรแกรมนำไปใช้ได้ เช่น รายการแท็กหรือฟิลด์ที่สกัดจากใบแจ้งหนี้ คุณมักขอให้ส่งกลับเป็น JSON
- ข้อความผิดพลาดและล็อก ข้อผิดพลาดจำนวนมากมาในรูป JSON และการอ่านมันมักเป็นวิธีที่เร็วที่สุดในการรู้ว่าอะไรผิด
การอ่าน JSON ได้ช่วยให้คุณตรวจสอบได้ว่าแอปได้รับอะไรจริง ๆ เห็นฟิลด์ที่หายไป และอธิบายปัญหาให้เครื่องมือสร้างแอป AI ของคุณฟังได้อย่างแม่นยำ
เปรียบเทียบแบบในชีวิตประจำวัน
ลองนึกถึงแบบฟอร์มกระดาษ: ชื่อ: ____ โทรศัพท์: ____ รับจดหมายข่าว: ☐ ใช่ ☐ ไม่ ทุกช่องคือป้ายกำกับพร้อมค่าที่อยู่ข้าง ๆ JSON คือแบบฟอร์มนั้นที่เขียนเป็นข้อความ ในโครงสร้างที่เข้มงวดซึ่งคอมพิวเตอร์อ่านได้โดยไม่ต้องเดา และเหมือนแบบฟอร์ม JSON ซ้อนส่วนย่อยไว้ในส่วนใหญ่ได้ (บล็อกที่อยู่ที่มีถนน เมือง และรหัสไปรษณีย์) และเป็นรายการได้ (เบอร์โทรหลายเบอร์)
หน้าตาของ JSON
นี่คือการจองหนึ่งรายการในรูป JSON:
{
"id": 5001,
"customer": "Lena Park",
"service": "Haircut",
"startsAt": "2026-10-03T14:00:00Z",
"price": 35.5,
"paid": false,
"notes": null,
"extras": ["beard trim", "hot towel"],
"contact": {
"email": "lena@example.com",
"phone": "+44 20 7946 0000"
}
}
การอ่าน:
- วงเล็บปีกกา
{ }ห่อ object ซึ่งเป็นชุดของคู่ชื่อและค่า - แต่ละคู่คือ
"name": valueคั่นด้วย comma - วงเล็บเหลี่ยม
[ ]ห่อ array ซึ่งเป็นรายการเรียงลำดับ - object และ array ซ้อนกันได้ เหมือน
contactและextrasในตัวอย่าง
ชนิดของค่าทั้งหก
JSON มีชนิดของค่าเพียงหกแบบ รายการสั้น ๆ นี้เป็นส่วนหนึ่งที่ทำให้มันใช้ได้ทุกที่
| ชนิด | ตัวอย่าง | หมายเหตุ |
|---|---|---|
| String (ข้อความ) | "Lena Park" | ต้องใช้เครื่องหมายคำพูดคู่เสมอ |
| Number (ตัวเลข) | 35.5, -2, 1e6 | ไม่มีเครื่องหมายคำพูด และไม่มีสัญลักษณ์สกุลเงิน |
| Boolean (จริง/เท็จ) | true, false | ตัวพิมพ์เล็ก ไม่มีเครื่องหมายคำพูด |
| Null | null | หมายถึง “ไม่มีค่า” |
| Object | { "city": "Leeds" } | ค่าที่มีชื่อกำกับ |
| Array | [1, 2, 3] | รายการเรียงลำดับ รายการเป็นชนิดใดก็ได้ |
ไม่มีชนิดวันที่ วันที่จะเขียนเป็นสตริง โดยปกติใช้รูปแบบ ISO 8601 ดังที่แสดงข้างบน (2026-10-03T14:00:00Z โดย Z หมายถึง UTC) การตกลงรูปแบบเดียวกันช่วยหลีกเลี่ยงบั๊กเรื่องเขตเวลาได้ทั้งหมวด
กฎที่เข้มงวด (ที่มาของข้อผิดพลาด)
JSON ไม่ยืดหยุ่นอย่างที่เห็น ต่อไปนี้ล้วนไม่ถูกต้อง:
{ name: "Lena" } ← คีย์ที่ไม่มีเครื่องหมายคำพูดคู่
{ 'name': 'Lena' } ← เครื่องหมายคำพูดเดี่ยว
{ "a": 1, "b": 2, } ← comma ท้ายรายการ
{ "a": 1 "b": 2 } ← ขาด comma
{ "a": 1 // comment } ← ไม่อนุญาตให้มี comment
ข้อผิดพลาดแบบ “Unexpected token” ส่วนใหญ่ที่คุณเจอคือหนึ่งในนี้ ตัวตรวจสอบหรือจัดรูปแบบ JSON จะแสดงบรรทัดที่ผิดให้เห็นชัดเจน
ตัวอย่างการทำงาน: JSON ผ่านแอป
ลูกค้าจองการตัดผมในแอปร้านเสริมสวย นี่คือจุดที่ JSON ปรากฏ:
- ฟอร์มการจองส่งข้อมูลนี้ไปยัง backend ของแอป
{ "service": "Haircut", "startsAt": "2026-10-03T14:00:00Z", "name": "Lena Park" }
- Backend บันทึกการจองลงฐานข้อมูล และตอบด้วยสถานะ
201 Createdพร้อม:
{ "id": 5001, "status": "confirmed" }
- ถ้าเวลานั้นถูกจองไปแล้ว มันอาจตอบด้วยสถานะ
409 Conflictพร้อม:
{ "error": "slot_taken", "message": "That time was just booked. Please pick another." }
หน้าเว็บจะอ่านค่า status หรือ error และแสดงข้อความที่ถูกต้อง ถ้าหน้าเว็บแสดงจอว่างแทน การเปิดเครื่องมือนักพัฒนาของเบราว์เซอร์ (แท็บ Network) จะแสดง JSON นี้ให้เห็น ซึ่งมักเป็นเบาะแสที่เร็วที่สุดว่าอะไรผิด
คำศัพท์สำคัญ
| คำศัพท์ | ความหมาย |
|---|---|
| Key (คีย์) | ชื่อในคู่ชื่อและค่า เช่น "email" |
| Parse | แปลงข้อความ JSON เป็นข้อมูลที่โปรแกรมใช้ได้ |
| Serialize / stringify | แปลงข้อมูลเป็นข้อความ JSON เพื่อส่งหรือจัดเก็บ |
| Payload | ข้อมูลที่ส่งในคำขอหรือการตอบกลับ |
| Schema | คำอธิบายรูปร่างที่ข้อมูลควรมี เช่น มีฟิลด์อะไรและชนิดใด JSON Schema คือมาตรฐานสำหรับเขียนสิ่งนี้ |
| JSONB | คอลัมน์ JSON แบบไบนารีของ Postgres ที่สร้างดัชนีและค้นหาได้ |
| NDJSON / JSON Lines | หนึ่งอ็อบเจกต์ JSON ต่อหนึ่งบรรทัด พบบ่อยในล็อกและการสตรีมข้อมูล |
ความเข้าใจผิดที่พบบ่อย
- “JSON คือ JavaScript” มันมาจากไวยากรณ์ของ JavaScript แต่ไม่ผูกกับภาษาใด Python, Java, C#, Go และภาษาอื่น ๆ อ่านได้ทั้งหมด
- “ตัวเลขในเครื่องหมายคำพูดก็ใช้ได้”
"35"เป็นสตริง ไม่ใช่ตัวเลข การปนกันทำให้เกิดบั๊กอย่าง"35" + "5"ได้"355"การเก็บเงินมักดีกว่าเก็บเป็นเซนต์จำนวนเต็ม (3550) เพื่อหลีกเลี่ยงปัญหาการปัดเศษ - “JSON ปลอดภัยเพราะเป็นแค่ข้อมูล” JSON บรรจุอะไรก็ได้ รวมถึงความลับ อย่าใส่ API key ไว้ใน JSON ที่ส่งไปยังเบราว์เซอร์
- “ใส่ทุกอย่างลงในคอลัมน์ JSON” สะดวกสำหรับส่วนเสริมที่ยืดหยุ่น แต่ข้อมูลที่คุณค้นหา กรอง หรือ join มักควรอยู่ในคอลัมน์ที่เหมาะสม
- “AI จะส่ง JSON ที่ถูกต้องเสมอ” โมเดลอาจเพิ่มข้อความอื่นหรือทำให้รูปแบบเสียได้ ผู้ให้บริการหลายรายมีโหมด structured output แต่โค้ดของคุณควรตรวจสอบสิ่งที่ได้รับกลับมาอยู่ดี
สิ่งที่ควรขอจากเครื่องมือสร้างแอป AI ของคุณ
- “แสดงตัวอย่าง JSON ที่ endpoint นี้ส่งกลับมา”
- “ส่งข้อผิดพลาดเป็น JSON ที่มีรหัส
errorและmessageที่คนอ่านเข้าใจได้” - “เก็บวันที่เป็นสตริง ISO 8601 ในเวลา UTC และแปลงเป็นเวลาท้องถิ่นเฉพาะตอนแสดงผลบนหน้าจอ”
- “เก็บราคาเป็นเซนต์จำนวนเต็ม”
- “ตรวจ JSON ที่รับเข้ามาบนเซิร์ฟเวอร์ และปฏิเสธคำขอที่ขาดฟิลด์หรือมีชนิดข้อมูลผิด”
- “เมื่อเรียกโมเดล AI ให้ขอ JSON ในรูปแบบนี้เป๊ะ ๆ และตรวจสอบก่อนนำไปใช้”
JSON ใน Mythex
คุณไม่ต้องเขียน JSON ด้วยมือใน Mythex เพียงอธิบายสิ่งที่ต้องการ และเอเจนต์จะเขียนโค้ดที่ส่งและอ่านมันให้ การรู้จักมันก็ยังมีประโยชน์ เมื่อมีอะไรพัง การวางข้อความผิดพลาดของ JSON ลงในแชตจะให้เบาะแสที่แม่นยำแก่เอเจนต์ เอกสารสูตร REST API backend ขอให้มี “ข้อผิดพลาด JSON ที่ชัดเจน” ตั้งแต่ต้น และสูตรเชื่อม API ใดก็ได้ ครอบคลุมการเรียกบริการภายนอก สำหรับภาพรวมที่กว้างขึ้น ดูREST กับ GraphQL และวิธีดีบักแอปที่สร้างด้วย AI
คำถาม
JSON คืออะไรแบบง่ายที่สุด?
JSON (JavaScript Object Notation) คือรูปแบบข้อความธรรมดาสำหรับเขียนข้อมูลที่มีโครงสร้างในรูปชื่อและค่า เช่น "name": "Lena" API บนเว็บเกือบทุกตัวใช้ JSON ส่งข้อมูลไปมา และแอปจำนวนมากใช้มันเก็บการตั้งค่าและข้อมูลที่บันทึกไว้
JSON เป็นภาษาโปรแกรมไหม?
ไม่ใช่ JSON คือรูปแบบข้อมูล ไม่ใช่ภาษา มันทำอะไรเองไม่ได้ เพียงอธิบายข้อมูลเท่านั้น แม้จะมีที่มาจาก JavaScript แต่ภาษาโปรแกรมแทบทุกภาษาอ่านและเขียน JSON ได้
JSON ต่างจาก JavaScript object อย่างไร?
หน้าตาคล้ายกัน แต่ JSON เข้มงวดกว่า ใน JSON ทุกคีย์ต้องอยู่ในเครื่องหมายคำพูดคู่ สตริงใช้เครื่องหมายคำพูดคู่ ห้ามมี comment ห้ามมี comma ท้ายรายการ และค่าที่ใช้ได้มีเพียงสตริง ตัวเลข true, false, null, object และ array
ทำไม JSON ของฉันถึงบอกว่าไม่ถูกต้อง?
สาเหตุที่พบบ่อยคือมี comma ท้ายรายการสุดท้าย ใช้เครื่องหมายคำพูดเดี่ยวแทนคู่ ขาด comma ระหว่างรายการ วงเล็บปิดไม่ครบ หรือมี comment นำไปวางในตัวตรวจสอบ JSON แล้วมันจะชี้บรรทัดที่ผิดให้