JSON Toolkit

JSON หรือ YAML

สรุปสำคัญ: JSON คั่นโครงสร้างด้วยปีกกา ส่วน YAML ใช้การย่อหน้า: เครื่องจักรได้ JSON คนที่ดูแล config ได้ YAML แต่คอมเมนต์ anchor และโครงสร้างหลายเอกสารจะหายไป

ผู้เริ่มต้นอ่านประมาณ 4 นาทีเผยแพร่ 2026-10-30อัปเดต 2026-10-30
เมื่อไหร่ควรใช้ JSON และเมื่อไหร่ควรใช้ YAML

สรุปสั้น ๆ: ใช้ JSON สำหรับข้อมูลระหว่างเครื่องกับเครื่อง และใช้ YAML สำหรับ config ที่มนุษย์แก้; เลือก YAML เมื่อต้องการคอมเมนต์ ข้อความหลายบรรทัด หรือ anchor และเลือก JSON เมื่อทุกภาษาต้อง parse payload เดียวกันโดยไม่มีความกำกวม

เทียบกันทีละด้าน

{
  "server": {
    "host": "127.0.0.1",
    "port": 8080
  }
}
server:
  host: 127.0.0.1
  port: 8080

โครงสร้างเดียวกัน YAML ตัดเครื่องหมายวรรคตอนออกและได้ที่สำหรับคอมเมนต์

จุดที่ต่างกัน

JSON YAML
โครงสร้าง ปีกกาและคอมมา การย่อหน้า
คอมเมนต์ ไม่มี มี
สตริง เครื่องหมายคำพูดคู่ ต้อง escape มักไม่ต้องใส่เครื่องหมายคำพูด
ข้อความหลายบรรทัด escape ด้วย \n หรือใช้อาร์เรย์ block scalar `
การใช้ซ้ำ ไม่มี anchor & และ alias *
หลายเอกสาร ห่อด้วยอาร์เรย์ ตัวคั่น ---
ความเร็วในการ parse เร็ว ช้ากว่า เพราะมีกฎการย่อหน้า
ความกำกวม ต่ำมาก no ถูก parse เป็น boolean, ย่อหน้าคลาดหนึ่งระดับ

แถวสุดท้ายคือต้นทุนจริงของ YAML ใน YAML 1.1 country: NO ให้ค่า boolean false และ version: 1.0 อาจกลายเป็น float JSON ไม่มี implicit typing เลย

การเลือกใช้

JSON: body ของ request และ response, ข้อความระหว่าง service, คอลัมน์ JSON ในฐานข้อมูล, อะไรก็ตามที่ต้อง parse เหมือนกันทุกภาษา

YAML: ระบบที่มันเป็นค่าเริ่มต้น (Kubernetes, Ansible, GitHub Actions, Docker Compose); config ที่ต้องมีคำอธิบาย; ไฟล์ที่เน้นข้อความยาว เช่น certificate, script หรือ SQL

สิ่งที่หายไปเมื่อแปลง

YAML → JSON: คอมเมนต์ทั้งหมด, การใช้ anchor ซ้ำ (ถูกขยายเป็นข้อมูลซ้ำ), ทุกเอกสารยกเว้นเอกสารแรก และรูปแบบการเขียนวันที่กับ boolean เดิม

JSON → YAML: ความต่างระหว่างสตริงกับตัวเลขอ่อนลง ดังนั้น "8080" กับ 8080 ต้องใส่เครื่องหมายคำพูดให้ชัดเพื่อความปลอดภัย

แปลงเพื่อ migration และตรวจแบบครั้งเดียว อย่าดูแลไฟล์เดียวกันในสองรูปแบบเป็นมุมมองคู่ขนาน

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

ควรตัดสินใจเลือกระหว่าง JSON กับ YAML อย่างไร?

เริ่มจากคนที่อ่านและดูแลไฟล์: ใช้ JSON เมื่อโปรแกรมสร้างไฟล์ ข้ามขอบเขตภาษา และต้อง parse ได้คาดเดาได้; ใช้ YAML เมื่อมนุษย์แก้และต้องการคำอธิบายฟิลด์หรือข้อความหลายบรรทัด ทั้งสองแปลงหากันได้ แต่ไม่ควรดูแล config เดียวกันในสองรูปแบบระยะยาว

ทำไม YAML ถึงมีความกำกวมเรื่องชนิดข้อมูลมากกว่า?

YAML มี implicit typing ค่าอย่าง NO, on หรือ 1.0 จึงกลายเป็น boolean วันที่ หรือตัวเลขได้ JSON มีชนิดชัดเจนเท่านั้น: สตริงต้องใส่เครื่องหมายคำพูด ทำให้ parse คาดเดาได้มากกว่าในต่างภาษา

คอมเมนต์และ anchor ควรคงอยู่เมื่อแปลง YAML เป็น JSON ไหม?

ไม่ควร คอมเมนต์ anchor และหลายเอกสารของ YAML แทนไม่ได้ใน JSON; anchor ถูกขยายเป็นเนื้อหาซ้ำ หากต้องเก็บไว้ ให้ใช้ไลบรารี YAML ที่มี Document API แทนการแปลงผ่าน object ไปกลับ

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