YAML ถึง JSON

YAML เขียนด้วยมือได้ง่ายกว่า ในขณะที่ JSON เหมาะสำหรับการใช้งานผ่านโปรแกรมมากกว่า และเครื่องมือสมัยใหม่หลายตัว (เช่น ระบบ CI pipeline, Kubernetes และ Ansible) ก็รองรับทั้งสองรูปแบบได้ เมื่อคุณต้องนำข้อมูลกำหนดค่าไปใส่ในเครื่องมือที่กำหนดให้ใช้ JSON เป็นหลัก เช่น คำนิยามของ API Gateway, แม่แบบ CloudFormation หรือเนื้อหาของ webhook ตัวแปลงนี้จะทำหน้าที่แปลงข้อมูลไป-กลับระหว่างรูปแบบทั้งสองได้อย่างเหมาะสม นอกจากนี้ แองเคอร์ (anchors), การรวมข้อมูล (merge) และประเภทข้อมูลเฉพาะของ YAML (เช่น วันที่, ค่า octal, null และ ~) จะถูกปรับให้อยู่ในรูปแบบที่สอดคล้องกับ JSON โดยอัตโนมัติ

วิธีแปลงไฟล์ YAML เป็น JSON

  1. 1

    วาง YAML

    เอกสาร YAML เวอร์ชัน 1.1 หรือ 1.2 ที่ถูกต้องตามข้อกำหนดใดๆ ก็ได้

  2. 2

    แก้ไขแองเคอร์

    แองเคอร์ (`&x`) และชื่อสมมติ (`*x`) จะถูกแสดงในรูปแบบขยายภายในบรรทัด ส่วนคีย์สำหรับการรวมข้อมูล (`<<`) จะถูกลดรูปให้เรียบง่าย

  3. 3

    กำหนดประเภทให้เป็นมาตรฐานเดียวกัน

    ทั้งวันที่ ค่า null และข้อมูลประเภท boolean จะถูกแปลงเป็นรูปแบบที่เทียบเท่ากับ JSON

  4. 4

    ผลลัพธ์ของไฟล์ JSON

    เลือกได้ตามใจชอบ ไม่ว่าจะเป็นแบบพิมพ์สวยงามหรือแบบย่อขนาด

ตัวอย่างการแปลง

YAML:

defaults: &defaults
  timeout: 30
  retries: 3

production:
  <<: *defaults
  host: prod.example.com
  debug: false

staging:
  <<: *defaults
  host: staging.example.com
  debug: true

JSON (แองเคอร์ถูกแก้ไขแล้ว):

{
  "defaults": {
    "timeout": 30,
    "retries": 3
  },
  "production": {
    "timeout": 30,
    "retries": 3,
    "host": "prod.example.com",
    "debug": false
  },
  "staging": {
    "timeout": 30,
    "retries": 3,
    "host": "staging.example.com",
    "debug": true
  }
}

การจับคู่ประเภท

YAML JSON
สตริง สตริง
จำนวนเต็ม ตัวเลข
ฟลอต จำนวน
ค่าบูลีน (true, false) ค่าบูลีน
ไม่มีข้อมูล (null, ~, ช่องว่าง) null
เวลา ข้อความตามมาตรฐาน ISO 8601
ลำดับ (รายการ) อาร์เรย์
การแมป วัตถุ

สิ่งต่าง ๆ ที่เฉพาะสำหรับ YAML ซึ่ง JSON ไม่สามารถแสดงได้

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

ข้อบกพร่องระหว่างเวอร์ชัน 1.1 กับ 1.2

  • YAML 1.1 จะวิเคราะห์ข้อมูลในรูปแบบ yes, no, on, off, y และ n เป็นค่าบูลีน ส่วน NO จะถูกแปลงเป็นรหัสประเทศโดยอัตโนมัติเป็น false โดยไม่มีการแจ้งเตือนใดๆ
  • YAML 1.2 จำกัดการใช้ข้อมูลประเภท boolean เฉพาะในรูปแบบ true และ false เท่านั้น ซึ่งปลอดภัยกว่า แต่ parser หลายตัว (รวมถึง PyYAML โดยค่าเริ่มต้น) ยังคงใช้มาตรฐาน YAML 1.1 อยู่

ตัวแปลงจะใช้ความหมายแบบ 1.2 เป็นค่าเริ่มต้น และจะแจ้งเตือนเมื่อการใช้ความหมายแบบ 1.1 จะทำให้ผลลัพธ์เปลี่ยนไป

การแปลงไป-กลับจาก JSON กลับเป็น YAML

การแปลงข้อมูลจาก JSON เป็น YAML มักเป็นการแปลงแบบไม่สูญเสียข้อมูล (เนื่องจาก JSON เป็นส่วนหนึ่งของไวยากรณ์ YAML เวอร์ชัน 1.2) ในขณะที่การแปลงจาก YAML เป็น JSON จะมีการสูญเสียข้อมูลบางส่วน เช่น คำอธิบายและโครงสร้างของ merge-key หากคุณวางแผนจะดำเนินการแปลงข้อมูลไป-กลับ ควรเก็บไฟล์ YAML เดิมไว้ในระบบควบคุมเวอร์ชัน

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

ไม่ ไฟล์เหล่านั้นมีเทมเพลตเฉพาะที่จะถูกเรียกใช้งานก่อนการวิเคราะห์ข้อมูลในรูปแบบ YAML ให้เริ่มจากการแสดงผลเทมเพลตก่อน (โดยใช้ kustomize build หรือ helm template) จากนั้นจึงนำผลลัพธ์มาใช้ในที่นี้

เวลาที่บันทึกด้วย YAML จะถูกแปลงเป็นสตริงตามมาตรฐาน ISO 8601 ในรูปแบบ JSON โดยตัวอย่างเช่น 2026-04-18 จะกลายเป็น "2026-04-18" โดยเวลาและเขตเวลาจะยังคงถูกเก็บรักษาไว้อย่างครบถ้วน

ขีดจำกัดการใช้งานจริงในเบราว์เซอร์อยู่ที่ประมาณ 10 เมกะไบต์ หากต้องการไฟล์ขนาดใหญ่กว่านี้ ให้ใช้คำสั่ง yq หรือ python -c "import yaml, json; print(json.dumps(yaml.safe_load(open(file))))" ในบรรทัดคำสั่ง

ไม่ กระบวนการแปลงข้อมูลจะดำเนินการภายในเบราว์เซอร์ของคุณ โดยไม่มีการส่งข้อมูลใดๆ ออกไป

เครื่องมือที่เกี่ยวข้อง

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

เครื่องสุ่มที่อยู่

สร้างระเบียนคล้ายที่อยู่ 1–20 รายการสำหรับแบบจำลองและการทดสอบ ด้วยรูปแบบประเทศแบบย่อ

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

ตัวสร้างลูกศร CSS

สร้างลูกศร CSS ในเบราว์เซอร์ด้วยทิศทาง สี ขนาด และความหนาของเส้นขอบ แล้วคัดลอกกฎ.

ตัวตรวจสอบความถูกต้องของ JSON

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

เครื่องมือนี้มีให้บริการในภาษาอื่น