JSON: คืออะไร โครงสร้างข้อมูล และหลักการทำงาน

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-03-08 เวลาอ่าน: 8 นาที

JSON (JavaScript Object Notation) เป็นรูปแบบการแลกเปลี่ยนข้อมูลแบบข้อความที่อ้างอิงจากไวยากรณ์ออบเจ็กต์ของ JavaScript ถูกใช้ในทุกที่: ตั้งแต่ REST API และไฟล์การกำหนดค่าไปจนถึงการจัดเก็บข้อมูลในฐานข้อมูลและแอปพลิเคชันมือถือ ตามเว็บไซต์ทางการของ JSON รูปแบบนี้ไม่ขึ้นอยู่กับภาษาโปรแกรมและรองรับโดยแทบทุกแพลตฟอร์มสมัยใหม่ JSON ได้กลายเป็นมาตรฐานโดยพฤตินัยสำหรับการถ่ายโอนข้อมูลระหว่างไคลเอนต์และเซิร์ฟเวอร์

ประเด็นสำคัญ

  • JSON — รูปแบบข้อความน้ำหนักเบาสำหรับข้อมูลที่มีโครงสร้างอ้างอิงจากไวยากรณ์ JavaScript
  • หกประเภทข้อมูล — สตริง ตัวเลข บูลีน null อาร์เรย์ และออบเจ็กต์สำหรับโครงสร้างใดๆ
  • ความเป็นสากล — รองรับโดยทุกภาษาโปรแกรมและแพลตฟอร์ม
  • REST API — รูปแบบหลักสำหรับการแลกเปลี่ยนข้อมูลในแอปพลิเคชันเว็บและมือถือ
  • ความสามารถในการอ่านของมนุษย์ — ไวยากรณ์ง่ายๆ อ่านและแก้ไขได้โดยไม่ต้องใช้เครื่องมือ

JSON คืออะไร?

JSON เป็นรูปแบบข้อความสำหรับแสดงข้อมูลที่มีโครงสร้าง อ้างอิงจากไวยากรณ์ของ JavaScript แม้จะมีต้นกำเนิดจาก JavaScript แต่รูปแบบนี้ไม่ขึ้นกับภาษาโดยสมบูรณ์ — ตัวแยกวิเคราะห์และตัวทำให้เป็นอนุกรมมีอยู่สำหรับทุกภาษาโปรแกรมยอดนิยม

ประวัติของ JSON เริ่มต้นขึ้นในช่วงต้นทศวรรษ 2000 เมื่อ Douglas Crockford ได้สกัดเซตย่อยของไวยากรณ์ JavaScript สำหรับการแลกเปลี่ยนข้อมูล ในปี 2013 รูปแบบนี้ได้รับการมาตรฐานเป็น ECMA-404 และต่อมาเป็น ISO/IEC 21778:2017 ชื่อย่อมาจาก JavaScript Object Notation

ข้อได้เปรียบหลักของ JSON คือไวยากรณ์ที่เรียบง่ายที่สุด ใช้เพียงหกประเภทในการอธิบายข้อมูล: สตริง ตัวเลข บูลีน null อาร์เรย์ และออบเจ็กต์ ซึ่งเพียงพอสำหรับการแสดงโครงสร้างข้อมูลใดๆ ที่ใช้ในแอปพลิเคชัน

JSON ใช้ที่ไหนบ้าง

  • REST API — รูปแบบหลักสำหรับคำขอและการตอบกลับระหว่างเซิร์ฟเวอร์และไคลเอนต์
  • ไฟล์การกำหนดค่า — package.json, tsconfig.json, .prettierrc
  • ฐานข้อมูล — MongoDB, PostgreSQL (JSONB), Firebase Firestore
  • แอปพลิเคชันมือถือ — การจัดเก็บการตั้งค่า, การแคชข้อมูล
  • เทคโนโลยีเว็บ — WebSocket, Server-Sent Events, localStorage

ไวยากรณ์และประเภทข้อมูล JSON

ไวยากรณ์ JSON ง่ายมาก: ข้อมูลจะแสดงเป็นคู่คีย์-ค่า โดยที่คีย์เป็นสตริงในเครื่องหมายคำพูดคู่ และค่าเป็นหนึ่งในหกประเภทพื้นฐาน ออบเจ็กต์อยู่ในวงเล็บปีกกา อาร์เรย์อยู่ในวงเล็บเหลี่ยม สตริงต้องใช้เครื่องหมายคำพูดคู่ เครื่องหมายคำพูดเดี่ยวไม่อนุญาต

ตัวเลขใน JSON สามารถเป็นจำนวนเต็มหรือทศนิยม บวกหรือลบ พร้อมสัญกรณ์เลขยกกำลัง ค่าบูลีนแสดงด้วยลิเทอรัล true และ false และการไม่มีค่าแสดงด้วย null อาร์เรย์ประกอบด้วยเซตของค่าที่เรียงลำดับของทุกประเภท รวมถึงอาร์เรย์และออบเจ็กต์ที่ซ้อนกัน

json
{
  "name": "JSON",
  "type": "text",
  "version": 2024,
  "flexible": true,
  "extensions": null,
  "languages": [
    "JavaScript",
    "Python",
    "Java"
  ],
  "nested": {
    "info": "การรองรับการซ้อน"
  }
}
ประเภท ตัวอย่าง คำอธิบาย
สตริง “ข้อความ” ในเครื่องหมายคำพูดคู่ พร้อมลำดับการหนี
ตัวเลข 42 จำนวนเต็ม ทศนิยม เลขยกกำลัง
บูลีน true true หรือ false — ไม่ต้องใช้เครื่องหมายคำพูด
null null การไม่มีค่า
ออบเจ็กต์ {} เซตที่ไม่เรียงลำดับของคู่คีย์-ค่า
อาร์เรย์ [] รายการค่าที่เรียงลำดับ

JSON ใน REST API

JSON เป็นรูปแบบการแลกเปลี่ยนข้อมูลหลักสำหรับ REST API ในการพัฒนามือถือและเว็บ เซิร์ฟเวอร์ส่ง JSON ในเนื้อหาของการตอบกลับ ไคลเอนต์ส่งในเนื้อหาของคำขอ ส่วนหัว Content-Type มาตรฐานสำหรับ JSON คือ application/json

REST API สมัยใหม่ใช้ JSON เพื่อส่งข้อมูลทุกประเภท: จากรายการง่ายๆ ไปจนถึงโครงสร้างซ้อนที่ซับซ้อนพร้อมความสัมพันธ์ระหว่างเอนทิตี ไลบรารีของไคลเอนต์ (เช่น Axios ใน JavaScript หรือ Retrofit บน Android) จะทำการทำให้เป็นอนุกรมและดีซีเรียลไลซ์ JSON โดยอัตโนมัติ ช่วยให้นักพัฒนาไม่ต้องแยกวิเคราะห์ด้วยตนเอง

ข้อได้เปรียบที่สำคัญของ JSON ใน REST API คือความสามารถในการถ่ายโอนข้อมูลบางส่วน (การตอบกลับบางส่วน) ผ่านพารามิเตอร์คำค้นหา รวมถึงการรองรับทรัพยากรที่ซ้อนกันโดยไม่ต้องมีคำขอเพิ่มเติมไปยังเซิร์ฟเวอร์

การแยกวิเคราะห์ JSON บนแพลตฟอร์มมือถือ

การแยกวิเคราะห์ JSON บนแพลตฟอร์มมือถือทำได้โดยใช้เครื่องมือในตัว Android ใช้ Gson ของ Google หรือ Moshi ของ Square iOS ใช้โปรโตคอล Codable กับ JSONDecoder แต่ละแพลตฟอร์มมีเครื่องมือที่สะดวกสำหรับการแปลง JSON เป็นออบเจ็กต์ดั้งเดิมและกลับกัน

JSON บน Android (Kotlin)

บน Android วิธีการที่นิยมใช้ Gson หรือ Moshi เพียงกำหนดคลาสข้อมูลด้วยคำอธิบายประกอบ @SerializedName และเรียก fromJson สำหรับการดีซีเรียลไลซ์ ไลบรารีจะจับคู่ชื่อฟิลด์ JSON กับคุณสมบัติของคลาสโดยอัตโนมัติ

kotlin
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName

data class User(
    @SerializedName("id") val id: Int,
    @SerializedName("name") val name: String,
    @SerializedName("email") val email: String
)

fun parseJson(jsonString: String): User {
    val gson = Gson()
    return gson.fromJson(jsonString, User::class.java)
}

JSON บน iOS (Swift)

บน iOS ใช้โปรโตคอลในตัว Codable กับ JSONDecoder โครงสร้างข้อมูลถูกประกาศเป็น struct ที่สอดคล้องกับ Codable หลังจากนั้น JSON จะถูกแยกวิเคราะห์ด้วยบรรทัดเดียว JSONEncoder ทำการซีเรียลไลซ์ย้อนกลับ — แปลงออบเจ็กต์เป็น JSON สำหรับส่งไปยังเซิร์ฟเวอร์

swift
import Foundation

struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

func parseJSON(from data: Data) throws -> User {
    let decoder = JSONDecoder()
    return try decoder.decode(User.self, from: data)
}

JSON vs XML: การเปรียบเทียบรูปแบบ

JSON และ XML เป็นสองรูปแบบหลักสำหรับการส่งข้อมูลที่มีโครงสร้าง JSON ชนะในเรื่องความเรียบง่ายและประสิทธิภาพ XML ชนะในเรื่องความเข้มงวดและการตรวจสอบ การเลือกระหว่างพวกเขาขึ้นอยู่กับข้อกำหนดของโครงการ: REST API มักใช้ JSON เอกสารที่ซับซ้อนพร้อมสคีมาใช้ XML

XML ต้องใช้แท็กปิดสำหรับทุกองค์ประกอบ ซึ่งเพิ่มขนาดข้อมูล 2-3 เท่าเมื่อเทียบกับ JSON ในขณะเดียวกัน XML รองรับเนมสเปซ สคีมา XSD คุณลักษณะ และการแปลง XSLT ทำให้มีประสิทธิภาพมากขึ้นสำหรับการจัดการเอกสารและการรวมระบบองค์กร

ลักษณะ JSON XML
ไวยากรณ์ เรียบง่ายที่สุด คีย์-ค่า แบบแท็ก แท็กเปิดและปิด
ขนาดข้อมูล กะทัดรัด ใหญ่กว่า JSON 2-3 เท่า
ประเภทข้อมูล หกประเภทพื้นฐาน เฉพาะข้อความ ประเภทผ่านสคีมา
การตรวจสอบ ไม่มีในตัว ผ่าน JSON Schema XSD — เข้มงวดและเติบโตเต็มที่
เนมสเปซ ไม่มี รองรับเนมสเปซอย่างเต็มที่
ความเร็วในการแยกวิเคราะห์ สูง ต่ำกว่าเนื่องจากความซับซ้อน

ตัวอย่างการทำงานกับ JSON

ตัวอย่าง แสดงการดำเนินการทั่วไปกับ JSON ในการพัฒนามือถือ: การแยกวิเคราะห์การตอบกลับ API การสร้าง JSON สำหรับส่ง และการประมวลผลโครงสร้างที่ซ้อนกัน การเข้าใจรูปแบบเหล่านี้จำเป็นสำหรับนักพัฒนาแอปพลิเคชันมือถือทุกคน

การทำให้ออบเจ็กต์เป็นอนุกรมเป็น JSON

ใน JavaScript JSON.stringify แปลงออบเจ็กต์เป็นสตริง JSON อาร์กิวเมนต์ที่สองสามารถเป็นอาร์เรย์ของคีย์สำหรับการทำให้เป็นอนุกรมแบบเลือก หรือฟังก์ชันแทนที่ อาร์กิวเมนต์ที่สามกำหนดการเยื้องสำหรับการจัดรูปแบบ

typescript
interface Order {
  id: string;
  items: OrderItem[];
  total: number;
  createdAt: string;
}

const order: Order = {
  id: 'ord_001',
  items: [{ product: 'phone', quantity: 2 }],
  total: 1599.98,
  createdAt: '2026-07-03T10:00:00Z'
};

const jsonString = JSON.stringify(order, null, 2);

การแยกวิเคราะห์ JSON ที่ซ้อนกัน

ใน Kotlin กับไลบรารี Moshi ออบเจ็กต์ JSON ที่ซ้อนกันจะถูกจัดการผ่านคลาสข้อมูลที่ซ้อนกัน คำอธิบายประกอบ @Json ระบุชื่อฟิลด์ JSON หากแตกต่างจากชื่อคุณสมบัติของคลาส อาร์เรย์จะแสดงเป็น List พร้อมประเภทขององค์ประกอบ

kotlin
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

data class ApiResponse(
    val status: String,
    val data: List<Product>,
    val pagination: Pagination
)

data class Product(
    val id: Int,
    val title: String,
    val price: Double
)

data class Pagination(
    val page: Int,
    val total: Int
)

val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

JSON Schema: การตรวจสอบโครงสร้าง

JSON Schema เป็นภาษาสำหรับอธิบายโครงสร้างของเอกสาร JSON คล้ายกับ XSD สำหรับ XML การใช้ JSON Schema คุณสามารถระบุฟิลด์บังคับ ประเภทข้อมูล ช่วงค่า รูปแบบสตริง และโครงสร้างที่ซ้อนกัน การตรวจสอบสคีมาจะตรวจจับข้อผิดพลาดของข้อมูลก่อนที่จะถูกประมวลผลในแอปพลิเคชัน

JSON Schema ถูกใช้อย่างแพร่หลายใน OpenAPI (Swagger) สำหรับจัดทำเอกสาร REST API ในฟอร์มตรวจสอบข้อมูลนำเข้า และในการทดสอบ ไฟล์สคีมาเองก็เป็นเอกสาร JSON ซึ่งอนุญาตให้ตัวแยกวิเคราะห์ JSON มาตรฐานอ่านได้ มีตัวตรวจสอบออนไลน์และไลบรารีสำหรับทุกภาษาโปรแกรมยอดนิยม

ในการพัฒนามือถือ JSON Schema ใช้สำหรับตรวจสอบการตอบกลับจากเซิร์ฟเวอร์ในขั้นตอนการทดสอบและสำหรับตรวจสอบไฟล์การกำหนดค่า ไลบรารีเช่น network-validator บน Android และ json-schema-validator ช่วยให้สามารถฝังการตรวจสอบลงในกระบวนการพัฒนาโดยตรง ป้องกันข้อผิดพลาดในขั้นตอนแรกเริ่ม

คำถามที่พบบ่อย

JSON รองรับประเภทข้อมูลใดบ้าง?

JSON รองรับหกประเภท: สตริง (ในเครื่องหมายคำพูดคู่) ตัวเลข (จำนวนเต็มและทศนิยม) บูลีน (true/false) null ออบเจ็กต์ (คู่คีย์-ค่าใน {}) และอาร์เรย์ (รายการค่าใน []) ซึ่งเพียงพอสำหรับโครงสร้างข้อมูลใดๆ ในแอปพลิเคชัน

สามารถใช้ความคิดเห็นใน JSON ได้หรือไม่?

ไม่ มาตรฐาน JSON ไม่รองรับความคิดเห็น หากคุณต้องการความคิดเห็น ให้ใช้ JSON5 (JSON แบบขยาย) หรือเพิ่มฟิลด์คำอธิบาย เช่น “_comment”: “คำอธิบาย” เครื่องมือบางอย่าง เช่น VS Code รองรับความคิดเห็นในไฟล์ JSON การกำหนดค่า แต่เป็นส่วนขยายที่ไม่ได้มาตรฐาน

JSON แตกต่างจาก JSONB ใน PostgreSQL อย่างไร?

JSONB เป็นรูปแบบการจัดเก็บแบบไบนารีสำหรับ JSON ใน PostgreSQL ต่างจาก JSON แบบข้อความ JSONB ประมวลผลได้เร็วกว่า รองรับการสร้างดัชนี (ดัชนี GIN) และรับประกันความเป็นเอกลักษณ์ของคีย์ อย่างไรก็ตาม JSONB ใช้พื้นที่ดิสก์มากกว่าเนื่องจากเมทาดาทาที่เพิ่มเข้ามา

จะตรวจสอบความถูกต้องของ JSON ได้อย่างไร?

ใช้ JSONLint (jsonlint.com) สำหรับการตรวจสอบอย่างรวดเร็ว, JSON.parse() ในตัวของ JavaScript พร้อม try-catch หรือปลั๊กอิน IDE การตรวจสอบรวมถึงการตรวจสอบเครื่องหมายคำพูดที่ถูกต้อง การปิดวงเล็บ และความสอดคล้องของประเภท สำหรับสคีมาที่ซับซ้อน ให้ใช้ JSON Schema Validator

ขนาดสูงสุดของไฟล์ JSON คือเท่าใด?

ไม่มีข้อจำกัด ในข้อกำหนด JSON ในทางปฏิบัติ ขนาดถูกจำกัดโดยหน่วยความจำของอุปกรณ์และความสามารถของตัวแยกวิเคราะห์ สำหรับแอปพลิเคชันมือถือ แนะนำให้ไม่เกิน 1-2 MB ต่อการตอบกลับ และสำหรับข้อมูลขนาดใหญ่ ให้ใช้การแบ่งหน้าหรือการสตรีม

สรุป

  • JSON — รูปแบบข้อความที่เรียบง่ายที่สุดพร้อมหกประเภทข้อมูลสำหรับการแลกเปลี่ยนข้อมูลที่มีโครงสร้าง
  • ความเป็นอิสระจากภาษา — ตัวแยกวิเคราะห์ JSON มีอยู่สำหรับทุกภาษาโปรแกรมยอดนิยม
  • REST API ใช้ JSON เป็นรูปแบบมาตรฐานสำหรับคำขอและการตอบกลับในแอปพลิเคชันมือถือ
  • การแยกวิเคราะห์ ทำด้วยเครื่องมือในตัว: Gson/Moshi บน Android, Codable บน iOS
  • JSON มีขนาดกะทัดรัดกว่า XML 2-3 เท่า แต่ด้อยกว่า Protobuf ในด้านประสิทธิภาพ
  • ความสามารถในการอ่านของมนุษย์ — ไวยากรณ์อ่านและดีบักได้ง่ายโดยไม่ต้องใช้เครื่องมือพิเศษ
  • JSON Schema — เครื่องมือเพิ่มเติมสำหรับตรวจสอบโครงสร้างและประเภทข้อมูล

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม