·อ่าน 8 นาที

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
Objectkey/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 เคยเป็นรูปแบบมาตรฐานสำหรับแลกเปลี่ยนข้อมูล ตารางนี้เปรียบเทียบความแตกต่างหลัก:

คุณสมบัติJSONXML
อ่านง่ายอ่านง่ายมากยาวกว่าและสแกนยากกว่า
ขนาดไฟล์เล็กกว่าใหญ่กว่าเพราะมี tags
การ parseJavaScript รองรับโดยตรงต้องใช้ parser
ชนิดข้อมูลStrings, numbers, booleans, nullส่วนใหญ่เป็น string
Commentsไม่รองรับรองรับ
SchemaJSON 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

แหล่งอ้างอิง

  1. ECMA International. (2017). ECMA-404: The JSON Data Interchange Syntax, 2nd Edition. https://ecma-international.org/publications-and-standards/standards/ecma-404/
  2. Bray, T. (2017). The JavaScript Object Notation (JSON) Data Interchange Format. RFC 8259, IETF. https://datatracker.ietf.org/doc/html/rfc8259
  3. Mozilla Developer Network. JSON - JavaScript. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON
  4. Crockford, D. Introducing JSON. https://www.json.org/json-en.html
  5. JSON Schema. JSON Schema Specification. https://json-schema.org/specification
USTHJP