เครื่องมือ
TH

แปลง JSON เป็น YAML ออนไลน์

วาง JSON เพื่อรับ YAML ที่สะอาดและอ่านง่ายสำหรับไฟล์คอนฟิก Kubernetes manifest หรือ CI pipeline – หรือสลับทิศทางเพื่อแปลง YAML เป็น JSON

JSON

YAML

เป็นส่วนตัว: ข้อมูลของคุณถูกประมวลผลในเบราว์เซอร์ และไม่มีการอัปโหลดไปที่ใดเลย

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

  1. วาง JSON หรือเปิดไฟล์ YAML จะแสดงขึ้นขณะที่คุณพิมพ์ เลือกการเยื้อง 2 หรือ 4 ช่องว่าง
  2. หากต้องการแปลงย้อนกลับ ให้สลับทิศทางเป็น YAML → JSON แล้ววาง YAML
  3. คัดลอกผลลัพธ์หรือดาวน์โหลดเป็นไฟล์ .yaml หรือ .json

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

JSONYAML
โครงสร้างวงเล็บปีกกา {} และวงเล็บเหลี่ยม []การเยื้องและรายการแบบ -
สตริงอยู่ในเครื่องหมายคำพูดคู่เสมอใส่เครื่องหมายคำพูดเฉพาะเมื่อจำเป็น
คอมเมนต์ไม่อนุญาต# comment
ข้อความหลายบรรทัดescape แบบ \nliteral block ด้วย |
การใช้งานทั่วไปAPI และการแลกเปลี่ยนข้อมูลไฟล์คอนฟิก

YAML 1.2 เป็น superset ของ JSON เอกสาร JSON จึงเป็น YAML ที่ถูกต้องอยู่แล้ว แต่ตัวแปลงจะเขียนในรูปแบบ block ที่อ่านง่ายกว่าแทน

ค่าที่ต้องใส่เครื่องหมายคำพูดใน YAML

คำบางคำที่ไม่มีเครื่องหมายคำพูดจะเปลี่ยนชนิดข้อมูลใน YAML: yes, no, on และ off เป็น boolean ใน parser ของ YAML 1.1, 007 และ 1e3 เป็นตัวเลข และ null หรือ ~ หมายถึง null นี่คือ “ปัญหานอร์เวย์” (Norway problem) ที่โด่งดัง: รหัสประเทศ NO กลายเป็น false เมื่อไม่ได้ใส่เครื่องหมายคำพูด ตัวแปลงจะใส่เครื่องหมายคำพูดให้สตริงเหล่านี้โดยอัตโนมัติ YAML ที่ได้จึงอ่านกลับมาเป็นข้อมูลชุดเดิมทุกประการ

YAML ที่รองรับสำหรับ YAML → JSON

parser เข้าใจ YAML ที่ใช้ในไฟล์คอนฟิกและ API: block mapping และลิสต์ สตริงแบบธรรมดา แบบเครื่องหมายคำพูดเดี่ยวและคู่ บล็อกหลายบรรทัดแบบ | และ > คอลเลกชันแบบ inline [ ] และ { } คอมเมนต์ และตัวคั่นเอกสาร --- ส่วน anchor (&), alias (*) และแท็กแบบกำหนดเองจะถูกรายงานว่าไม่รองรับ พร้อมเลขบรรทัด สำหรับไฟล์ที่มีหลายเอกสาร จะแปลงเฉพาะเอกสารแรกเท่านั้น

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

YAML เป็น superset ของ JSON หรือไม่?

YAML 1.2 ถูกออกแบบให้เป็น superset ของ JSON ไฟล์ JSON แทบทุกไฟล์จึงเป็น YAML ที่ถูกต้องด้วย แต่ในทางกลับกันไม่เป็นเช่นนั้น: YAML มีคอมเมนต์ anchor และบล็อกหลายบรรทัดที่ JSON ไม่มี

คอมเมนต์จะถูกเก็บไว้เมื่อแปลง YAML เป็น JSON หรือไม่?

ไม่ JSON ไม่มีคอมเมนต์ คอมเมนต์จึงถูกตัดทิ้ง แต่คีย์ ค่า และลำดับของคีย์จะถูกเก็บไว้ครบถ้วน

ทำไม YAML ของฉันถึงไม่ผ่าน?

สาเหตุที่พบบ่อยคือใช้แท็บในการเยื้อง (YAML อนุญาตเฉพาะช่องว่าง) รายการในลิสต์หรือ mapping เดียวกันไม่ได้เริ่มที่คอลัมน์เดียวกัน และไม่มีช่องว่างหลังโคลอน ข้อความแจ้งข้อผิดพลาดจะบอกบรรทัดที่มีปัญหา

ค่าใน YAML ถูกกำหนดชนิดใน JSON อย่างไร?

เป็นไปตาม core schema ของ YAML 1.2: true/false กลายเป็น boolean, null และ ~ กลายเป็น null และตัวเลขธรรมดากลายเป็นตัวเลข JSON ส่วนคำอย่าง yes ยังคงเป็นสตริง ใส่เครื่องหมายคำพูดให้รหัสอย่าง "007" ใน YAML เพื่อเก็บไว้เป็นข้อความ