JSON คืออะไร? คู่มือฉบับสมบูรณ์สำหรับผู้เริ่มต้น
JSON อยู่แทบทุกที่ ทั้ง APIs, config files, databases และอื่น ๆ บทความนี้สรุปสิ่งสำคัญที่ควรรู้เกี่ยวกับรูปแบบแลกเปลี่ยนข้อมูลยอดนิยมบนเว็บ
สารบัญ
JSON คืออะไร?
JSON ย่อมาจาก JavaScript Object Notation เป็นรูปแบบแลกเปลี่ยนข้อมูลแบบ text-based ที่เบา อ่านง่าย เขียนง่าย และให้โปรแกรม parse หรือสร้างข้อมูลได้สะดวก
แม้ชื่อจะมีคำว่า "JavaScript" แต่ JSON เป็นรูปแบบข้อมูลที่ ไม่ผูกกับภาษาใดภาษาเดียว ปัจจุบันรองรับในภาษาโปรแกรมแทบทั้งหมด เช่น Python, Java, C#, Go, Ruby, PHP และภาษาอื่น ๆ อีกมากมาย
JSON สร้างจากโครงสร้างข้อมูลพื้นฐาน 2 แบบ:
- Objects - ชุดของ key/value pairs คล้าย dictionary หรือ hash map
- Arrays - รายการค่าที่มีลำดับ
ประวัติย่อของ JSON
JSON ได้รับความนิยมจาก Douglas Crockford ในช่วงต้นปี 2000 เขาไม่ได้ประดิษฐ์รูปแบบนี้ขึ้นใหม่ทั้งหมด แต่ช่วยค้นพบและทำให้ subset ของ JavaScript literal syntax ที่ถูกใช้แลกเปลี่ยนข้อมูลอยู่แล้วกลายเป็นรูปแบบที่ชัดเจน
JSON ถูกกำหนดเป็นมาตรฐาน ECMA-404 ในปี 2013 และอธิบายไว้ใน RFC 8259 โดย IETF ความเรียบง่ายของ JSON ทำให้มันค่อย ๆ แทนที่ XML และกลายเป็นรูปแบบหลักของ web APIs และ config files
กฎ Syntax ของ JSON
JSON มี syntax ที่เรียบง่าย มีกฎสำคัญไม่กี่ข้อ:
- ข้อมูลเขียนเป็น key/value pairs และคั่น key กับ value ด้วย colon
- Keys ต้องเป็น string ที่อยู่ใน double quotes; single quotes ใช้ไม่ได้
- รายการข้อมูลต้อง คั่นด้วย comma
- วงเล็บปีกกา
{}ใช้เก็บ objects - วงเล็บเหลี่ยม
[]ใช้เก็บ arrays - ห้ามมี trailing comma หลังรายการสุดท้าย
- JSON มาตรฐานไม่รองรับ comments
ชนิดข้อมูลใน JSON
JSON รองรับชนิดข้อมูล 6 แบบ:
| ชนิดข้อมูล | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| String | ข้อความที่อยู่ใน double quotes | "hello" |
| Number | เลขจำนวนเต็มหรือทศนิยม | 42, 3.14 |
| Boolean | ค่าจริงหรือเท็จ | true, false |
| Null | ค่าว่างหรือไม่มีค่า | null |
| Object | key/value pairs ในวงเล็บปีกกา | {"a": 1} |
| Array | รายการที่มีลำดับในวงเล็บเหลี่ยม | [1, 2, 3] |
JSON ไม่รองรับ undefined, functions, dates หรือค่าตัวเลขพิเศษอย่าง NaN และ Infinity
ตัวอย่าง JSON
ตัวอย่างต่อไปนี้คือ JSON object สำหรับข้อมูลโปรไฟล์ผู้ใช้:
{
"name": "Jane Smith",
"age": 28,
"email": "jane@example.com",
"isVerified": true,
"address": {
"street": "123 Main St",
"city": "San Francisco",
"state": "CA",
"zip": "94102"
},
"hobbies": ["reading", "hiking", "photography"],
"subscription": null
}ตัวอย่างนี้แสดง string, number, boolean, object ซ้อน, array และ null ซึ่งเป็นชนิดข้อมูลหลักทั้งหมดของ JSON
JSON เทียบกับ XML
ก่อน JSON จะกลายเป็นกระแสหลัก XML เคยเป็นรูปแบบมาตรฐานสำหรับแลกเปลี่ยนข้อมูล ตารางนี้เปรียบเทียบความแตกต่างหลัก:
| คุณสมบัติ | JSON | XML |
|---|---|---|
| อ่านง่าย | อ่านง่ายมาก | ยาวกว่าและสแกนยากกว่า |
| ขนาดไฟล์ | เล็กกว่า | ใหญ่กว่าเพราะมี tags |
| การ parse | JavaScript รองรับโดยตรง | ต้องใช้ parser |
| ชนิดข้อมูล | Strings, numbers, booleans, null | ส่วนใหญ่เป็น string |
| Comments | ไม่รองรับ | รองรับ |
| Schema | JSON Schema (ไม่บังคับ) | XSD, DTD |
JSON ได้รับความนิยมมากกว่าเพราะเรียบง่ายกว่า เบากว่า และเข้ากับโครงสร้างข้อมูลที่ใช้ในภาษาโปรแกรมส่วนใหญ่ได้เป็นธรรมชาติ
JSON ใช้ที่ไหนบ้าง?
JSON ถูกใช้แพร่หลายในวงการซอฟต์แวร์:
- REST APIs - web APIs ส่วนใหญ่มากใช้ JSON เป็นรูปแบบ request และ response
- Configuration files - เครื่องมืออย่าง npm (
package.json), TypeScript (tsconfig.json) และ VS Code ใช้ JSON สำหรับ config - NoSQL databases - ฐานข้อมูลอย่าง MongoDB และ CouchDB เก็บข้อมูลเป็นเอกสารที่คล้าย JSON
- Web storage - browser ใช้
localStorageและsessionStorageร่วมกับการ serialize เป็น JSON - Data interchange - microservices และ distributed systems มักสื่อสารกันด้วย JSON messages
- Logging - structured logging มักใช้ JSON เพื่อให้ parse และวิเคราะห์ได้ง่าย
ข้อผิดพลาด JSON ที่พบบ่อย
แม้แต่นักพัฒนาที่มีประสบการณ์ก็ยังพลาดเรื่อง JSON เหล่านี้ได้:
✕ ใช้ single quotes
{ 'name': 'John' }JSON ต้องใช้ double quotes ทั้งกับ keys และ string values
✕ ใส่ trailing comma
{ "a": 1, "b": 2, }comma หลังรายการสุดท้ายไม่ใช่ JSON ที่ถูกต้อง
✕ ไม่ใส่ quotes ให้ key
{ name: "John" }Keys ต้องอยู่ใน double quotes เสมอ
✕ ใส่ comments ใน JSON
{ "name": "John" // this is a comment }JSON มาตรฐานไม่รองรับ comments หากต้องการ comments ให้ใช้ JSONC หรือ JSON5
การทำงานกับ JSON
ใน JavaScript คุณสามารถ parse และสร้าง JSON ด้วย method ที่มีมาให้ 2 ตัว:
// Parse a JSON string into a JavaScript object
const data = JSON.parse('{"name": "Jane", "age": 28}');
console.log(data.name); // "Jane"
// Convert a JavaScript object to a JSON string
const json = JSON.stringify({ name: "Jane", age: 28 });
console.log(json); // '{"name":"Jane","age":28}'
// Pretty-print with 2-space indentation
const pretty = JSON.stringify(data, null, 2);
console.log(pretty);เมื่อทำงานกับ JSON สิ่งสำคัญคือการ validate และ format ให้ถูกต้อง JSON ที่ผิดรูปแบบอาจทำให้เกิด parsing errors ที่ debug ยาก
จัดรูปแบบและตรวจสอบ JSON ของคุณ
ใช้เครื่องมือ JSON Formatter ฟรีของเราเพื่อ format, validate และ minify ข้อมูล JSON ได้ทันทีในเบราว์เซอร์ โดยไม่ต้องอัปโหลดข้อมูลไปยัง server
ลองใช้ JSON Formatterแหล่งอ้างอิง
- ECMA International. (2017). ECMA-404: The JSON Data Interchange Syntax, 2nd Edition. https://ecma-international.org/publications-and-standards/standards/ecma-404/
- Bray, T. (2017). The JavaScript Object Notation (JSON) Data Interchange Format. RFC 8259, IETF. https://datatracker.ietf.org/doc/html/rfc8259
- Mozilla Developer Network. JSON - JavaScript. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON
- Crockford, D. Introducing JSON. https://www.json.org/json-en.html
- JSON Schema. JSON Schema Specification. https://json-schema.org/specification