ข้ามไปที่เนื้อหาหลัก

YAML กับ JSON แตกต่างกันอย่างไร

YAML กับ JSON แตกต่างกันอย่างไร

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

อ่านเพิ่มเติมเกี่ยวกับ JSON »

การแสดงแทนข้อมูลของ YAML กับ JSON

ลักษณะที่ปรากฏและไวยากรณ์ของ JSON และ YAML มีความคล้ายคลึงกัน แต่แตกต่างกันเล็กน้อย

เมื่อดูคร่าวๆ รูปแบบ JSON มีลักษณะการนำเสนอข้อมูลเหมือนเครื่องจักรมากกว่า YAML ข้อความ JSON มีสัญลักษณ์เหล่านี้

  • วงเล็บปีกกาสำหรับอ็อบเจกต์
  • เครื่องหมายทวิภาคเพื่อแยกคู่คีย์-ค่า
  • วงเล็บเหลี่ยมสำหรับอาร์เรย์ 
  • เครื่องหมายคำพูดเพื่อครอบสตริง

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

รูปแบบ YAML แตกต่างจาก JSON เนื่องจากมีลักษณะเหมือนมนุษย์เขียนข้อมูลที่มีโครงสร้างลงบนกระดาษ YAML ได้รับการออกแบบมาโดยเฉพาะเพื่อให้มนุษย์อ่านง่ายขึ้น โดยจะใช้องค์ประกอบต่อไปนี้

  • การเยื้องเพื่อแสดงอ็อบเจกต์ 
  • เครื่องหมายทวิภาคเพื่อแยกคู่คีย์-ค่า
  • เครื่องหมายยัติภังค์สำหรับอาร์เรย์
  • เครื่องหมายแฮชเพื่อแสดงถึงความคิดเห็น

YAML เดิมถูกสร้างขึ้นเพื่อลดความซับซ้อนของ XML

ตัวอย่างเอกสารของ YAML กับ JSON

ต่อไปนี้คือตัวอย่างลักษณะเอกสารที่มีข้อมูลผลิตภัณฑ์เสื้อใน YAML และ JSON

YAML

JSON

ประเภท: เสื้อยืด

ราคา: 20.00

ไซส์:

  • S
  • M
  • L

   รีวิว: # หมายเหตุเกี่ยวกับรีวิว

  • ชื่อผู้ใช้: user1

         คะแนน: 4

         สร้าง_เมื่อ: 2023-04-19T12:30:00Z

  • ชื่อผู้ใช้: user2

         คะแนน: 5

         สร้าง_เมื่อ: 2023-05-02T15:00:00Z

{

  "product": {

    "type": "T-Shirt",

    "price": 20.00,

    "sizes": ["S", "M", "L"]

    "reviews": {

      { "username": "user1”, "rating": 4, "created_at": "2023-04-19T12:30:00Z" },

      { "username": "user2”, "rating": 5, "created_at": "2023-05-02T15:00:00Z" }

    }

  }

}

ความแตกต่างที่สำคัญระหว่าง YAML กับ JSON

เนื่องจากไวยากรณ์ของ YAML ถือว่าง่ายต่อการอ่าน ทำความเข้าใจ และเขียนไฟล์ YAML มากกว่า JSON โดยเฉพาะสำหรับผู้ที่ไม่ใช่นักพัฒนา ต่อไปเราจะพูดถึงความแตกต่างที่สำคัญอื่นๆ

ประเภทข้อมูล

รูปแบบ JSON รองรับประเภทข้อมูลต่อไปนี้

  • จำนวน
  • บูลีน
  • Null
  • สตริง
  • อาร์เรย์
  • อ็อบเจกต์ (การเก็บรวบรวมคู่คีย์-ค่าที่ซ้อนกัน)

รูปแบบ YAML รองรับประเภทข้อมูลแบบดั้งเดิมทั้งหมดในภาษาเขียนโปรแกรมแบบไดนามิกใดๆ ตัวอย่างเช่น รองรับการเก็บรวบรวมข้อมูลที่ซ้อนกันที่สร้างจากลำดับ (รายการ) สเกลาร์ (เช่น จำนวนและสตริง) และการแมป (คู่คีย์-ค่า) การรองรับนี้ช่วยให้คุณสามารถสร้างโครงสร้างข้อมูลที่ซับซ้อนขึ้นได้ 

การรองรับในตัว

JSON ถูกนำมาใช้กันอย่างแพร่หลายร่วมกับภาษาเขียนโปรแกรมมากมายที่แตกต่างกัน ตัวอย่างเช่น JavaScript มีการรองรับในตัวเพื่อแยก JSON ไลบรารีมาตรฐานของ Python มี JSON อยู่ด้วย และสร้างไลบรารี JSON ใน PHP 5.2 ในทำนองเดียวกัน ภาษายอดนิยมอื่นๆ อีกกว่า 50 ภาษารองรับ JSON ผ่านแพ็คเกจและไลบรารีต่างๆ

ในทางตรงกันข้าม ไม่มีภาษายอดนิยมที่รองรับ YAML ในตัว แต่นักพัฒนาต้องติดตั้งและใช้ไลบรารี ตัวแยก YAML ยอดนิยม 2 แบบคือ PyYAML สำหรับ Python และ LibYAML สำหรับ C 

การกำหนดเวอร์ชัน

คุณสามารถกำหนดเวอร์ชันทั้ง JSON และ YAML ผ่านซอฟต์แวร์การกำหนดเวอร์ชันเช่น Git ได้ อย่างไรก็ตาม คุณจะอ่านและทำความเข้าใจการเปลี่ยนแปลงในไฟล์ YAML ระหว่างเวอร์ชันได้ง่ายกว่า

ความคิดเห็น

ไม่มีการรองรับรูปแบบข้อมูล JSON สำหรับความคิดเห็น นักพัฒนาจะต้องกำหนดคู่คีย์-ค่าความคิดเห็นเป็นวิธีแก้ไข

ในไฟล์ YAML ความคิดเห็นจะอยู่หลังสัญลักษณ์แฮช

เมื่อใดที่ควรใช้ YAML หรือ JSON

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

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

ในอีกทางหนึ่ง YAML มีบทบาทโดดเด่นในด้านการประมวลผลเป็นพิเศษ เนื่องจากความสามารถในการอ่านและการรองรับความคิดเห็น โดยเฉพาะอย่างยิ่ง YAML เป็นรูปแบบการแปลงข้อมูลเป็นอนุกรมหลักสำหรับไฟล์การกำหนดค่าในระบบอัตโนมัติ, DevOps และเครื่องมือและบริการ Infrastructure as Code (IaC) ตัวอย่างเช่น YAML มักจะใช้ในไฟล์ Docker และ Kubernetes

YAML ยังใช้ในการเขียนไฟล์การกำหนดค่าในข้อเสนอ Amazon Web Services (AWS) เหล่านี้: AWS CloudFormation, AWS Serverless Application Model (AWS SAM) และ AWS CodeBuild

สรุปความแตกต่างระหว่าง YAML กับ JSON

 

JSON

YAML

คืออะไร

รูปแบบการแปลงข้อมูลเป็นอนุกรมเพื่อแลกเปลี่ยนข้อมูลที่มีโครงสร้างระหว่างแอปพลิเคชันและบริการซอฟต์แวร์ ให้ความสำคัญกับการใช้แอปพลิเคชันมากกว่าการใช้มนุษย์ 

รูปแบบการแปลงข้อมูลเป็นอนุกรมเพื่อแลกเปลี่ยนข้อมูลที่มีโครงสร้างระหว่างแอปพลิเคชันและบริการซอฟต์แวร์ ให้ความสำคัญกับการใช้มนุษย์มากกว่าการใช้แอปพลิเคชัน

กรณีการใช้งานหลัก

แพร่หลายในแพลตฟอร์ม ภาษา การสื่อสารบนซอฟต์แวร์แบบกระจาย แอปบนเว็บ ไฟล์การกำหนดค่า และ API

ไฟล์การกำหนดค่าในระบบอัตโนมัติ, DevOps และเครื่องมือและบริการ Infrastructure as Code (IaC)

ความสามารถในการอ่าน

ง่ายสุดๆ

ง่ายที่สุด

ประเภทข้อมูล

จำนวน, บูลีน, null, สตริง, อาร์เรย์ และอ็อบเจกต์

รองรับข้อมูลทุกประเภทผ่านการเก็บรวบรวมข้อมูลที่ซ้อนกันซึ่งประกอบด้วยลำดับ สเกลาร์ และการแมป

รองรับความคิดเห็น

ไม่ได้

ได้

รองรับอ็อบเจกต์ข้อมูลเป็นค่า

ได้

ไม่ได้

การจัดเวอร์ชัน

มี แต่ไม่ง่ายที่จะอ่านและทำความเข้าใจความแตกต่างระหว่างเวอร์ชันได้อย่างรวดเร็ว

มี และง่ายต่อการอ่านและทำความเข้าใจความแตกต่างระหว่างเวอร์ชันได้อย่างรวดเร็ว

AWS จะรองรับข้อกำหนดด้านความต้องการของ YAML และ JSON ของคุณได้อย่างไร

บริการผสานรวมข้อมูลทั้งหมดของ AWS สามารถประมวลผลไฟล์ JSON ได้ ต่อไปนี้คือบริการของ AWS ที่เกี่ยวข้องสามบริการ:

  • AWS Glu e เป็นบริการรวมข้อมูลแบบไร้เซิร์ฟเวอร์ คุณสามารถใช้ AWS Glue เพื่อค้นพบ จัดเตรียม และรวมข้อมูลสำหรับการวิเคราะห์ แมชชีนเลิร์นนิง และการพัฒนาแอปพลิเคชัน
  • Amazon Simple QueuService (Amazon SQS) เป็นบริการคิว ข้อความที่มีการจัดการอย่างสมบูรณ์ คุณสามารถใช้เพื่อส่ง จัดเก็บ และรับข้อความระหว่างส่วนประกอบซอฟต์แวร์ได้ทุกระดับปริมาณ ข้อความ Amazon SQS มีข้อมูลที่เป็นข้อความซึ่งรวมถึง XML JSON และข้อความที่ไม่จัดรูปแบบได้สูงสุด 256 KB
  • Amazon DocumentDB (ที่มีความเข้ากันได้ MongoDB) เป็นฐานข้อมูลเอกสาร JSON ดั้งเดิมที่มีการจัดการอย่างสมบูรณ์ Amazon DocumentDB ทำให้การใช้งานเวิร์กโหลดเอกสารที่สำคัญทำได้ง่ายและคุ้มค่าในทุกขนาดโดยไม่ต้องจัดการโครงสร้างพื้นฐาน

ในทำนอง เดียวกันเครื่องมือสำหรับนักพัฒนาใน AWS รองรับไฟล์ YAML ในบริการปรับใช้หลายแห่ง ยกตัวอย่าง 2 บริการดังนี้

  • AWS Step Fun ctions ช่วยให้คุณสามารถสร้างเวิร์กโฟลว์ไร้เซิร์ฟเวอร์ที่ยืดหยุ่นโดยใช้บริการ AWS เช่น AWS Lambda, Amazon Simple Notification Service (Amazon SNS) และ Amazon DynamoDB Step Functions ยังรองรับคำจำกัดความเครื่องสถานะ YAML ทำให้สามารถกำหนดเวิร์กโฟลว์ในภาษาเดียวกับ Infrastructure as Code (IaC) ได้
  • AWS App2Contain er เป็นเครื่องมือบรรทัดคำสั่งที่คุณสามารถใช้เพื่อย้ายและปรับปรุงแอปพลิเคชันเว็บ Java และ .NET ให้ทันสมัยไปในรูปแบบคอนเทนเนอร์ มันสร้างไฟล์ YAML สำหรับคำจำกัดความ ของงาน Amazon Elastic Container Service (Amazon ECS ) และการปรับใช้ Kubernetes นอกจากนี้ยังเป็นไปตามแนวทางปฏิบัติที่ดีที่สุดของ AWS สำหรับการรักษาความปลอดภัยและความสามารถในการปรับขนาด

เริ่มต้นใช้งาน YAML และ JSON บน AWS โดย การสร้างบัญชีวัน นี้