ตัวแปลง JSON เป็น YAML

เปลี่ยน JSON เป็น YAML ที่สะอาดและอ่านง่ายสำหรับ Kubernetes, Docker Compose, GitHub Actions หรือ Ansible พร้อมควบคุมการเยื้อง สไตล์ และอัญประกาศได้เต็มที่

ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด

ผลลัพธ์ JSON

วิธีใช้ JSON เป็น YAML

  1. วาง JSON ลงในช่องซ้าย หรือเปิดไฟล์ .json
  2. YAML จะแสดงทางขวาทันทีที่คุณพิมพ์
  3. เลือกการเยื้อง (2 หรือ 4 ช่องว่าง) และสไตล์: block (หนึ่งคีย์ต่อบรรทัด) หรือ flow ({a: 1}/[x, y]) ตั้งแต่ระดับการซ้อนที่กำหนด
  4. เลือกรูปแบบอัญประกาศ และติ๊ก เรียงคีย์ หากต้องการเรียงตามตัวอักษร
  5. คัดลอกหรือดาวน์โหลด YAML ส่วน JSON ที่ไม่ถูกต้องจะถูกแจ้งพร้อมบรรทัด คอลัมน์ และสาเหตุที่เป็นไปได้

ทำไมต้องแปลง JSON เป็น YAML?

JSON เหมาะสำหรับเครื่องและ API แต่ YAML อ่านและแก้ไขได้ง่ายกว่าสำหรับคน: ไม่มีวงเล็บปีกกา ไม่บังคับใส่อัญประกาศ และรองรับคอมเมนต์ เครื่องมือ infrastructure ส่วนใหญ่ รวมถึง Kubernetes, Helm, Docker Compose, GitHub Actions, GitLab CI และ Ansible ตั้งค่าด้วย YAML ในขณะที่ข้อมูลต้นทาง (ผลลัพธ์จาก API, kubectl get -o json, Terraform state) มักเป็น JSON

สไตล์ block vs. flow

สไตล์ block วางแต่ละคีย์และรายการไว้คนละบรรทัด และเป็นตัวเลือกมาตรฐานสำหรับไฟล์ config สไตล์ flow ใช้ {} และ [] แบบอินไลน์เหมือน JSON และทำให้โครงสร้างปลายทางที่สั้นกระชับ “Flow ตั้งแต่ระดับ 2” คงสองระดับบนสุดเป็น block และทำให้ส่วนที่ลึกกว่าเป็นอินไลน์ ซึ่งเหมาะกับรายการยาวของ object เล็ก ๆ เช่น port หรือ env var

การใส่อัญประกาศอย่างปลอดภัย

สตริงที่ YAML parser อาจอ่านผิดจะถูกใส่อัญประกาศอัตโนมัติ: ค่าอย่าง 'no', 'on', '1.0', 'null', สตริงที่ขึ้นต้นด้วย * หรือ & และสตริงที่มี : เลือก เดี่ยวเสมอ หรือ คู่เสมอ หาก style guide ของคุณกำหนดให้ทุกสตริงต้องมีอัญประกาศ

ข้อควรระวังระหว่าง YAML 1.1 กับ 1.2

ตัวแปลงนี้ทำตาม YAML 1.2 ซึ่งเป็นสเปกปัจจุบัน เครื่องมือเก่าหลายตัว (PyYAML, Psych ของ Ruby, Kubernetes และ Ansible บางเวอร์ชัน) ยังอ่านแบบ YAML 1.1 ซึ่งมีกฎต่างกัน:

  • ปัญหานอร์เวย์: ใน YAML 1.1 country: no หมายถึง false รหัสประเทศของนอร์เวย์ NO จึงหายไป เช่นเดียวกับ yes, on, off, y และ n ส่วน YAML 1.2 ถือว่าเฉพาะ true และ false เป็น boolean
  • เลขฐานแปด: 0755 เป็นเลขฐานแปดใน 1.1 แต่เป็นเลขฐานสิบธรรมดาใน 1.2 ซึ่งใช้ 0o755 ควรใส่อัญประกาศให้ file mode เพื่อความปลอดภัย
  • เลขฐานหกสิบ: ใน 1.1 22:30 อาจถูกพาร์สเป็นตัวเลข 1350 ควรใส่อัญประกาศให้เวลาและการแมป port เช่น "8080:80"

ทิศทาง JSON → YAML จะใส่อัญประกาศให้สตริงที่กำกวม ('no', 'on', 'y') อัตโนมัติ YAML ที่สร้างขึ้นจึงอ่านได้เหมือนกันทั้งสองเวอร์ชัน

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

การแปลงไม่สูญเสียข้อมูลใช่ไหม?
ใช่ เอกสาร JSON ทุกฉบับเป็น YAML 1.2 ที่ถูกต้อง และ YAML ที่สร้างขึ้นพาร์สกลับได้เป็นข้อมูลเดิมทุกประการ ตรวจสอบได้โดยกด สลับ
ทำไมบางสตริงมีอัญประกาศแต่บางสตริงไม่มี?
เมื่อเลือก เฉพาะเมื่อจำเป็น จะใส่อัญประกาศเฉพาะตรงที่ค่าที่ไม่มีอัญประกาศจะเปลี่ยนความหมาย เช่น 'yes', '123' หรือสตริงที่มีอักขระพิเศษ ส่วนที่เหลือจะคงไว้แบบธรรมดาเพื่อให้อ่านง่าย
เพิ่มคอมเมนต์ในผลลัพธ์ได้ไหม?
JSON ไม่มีคอมเมนต์ จึงไม่มีอะไรให้แปลง แต่คุณเพิ่ม # comments ใน YAML ได้หลังจากคัดลอก
ลำดับคีย์เปลี่ยนหรือไม่?
ไม่ คีย์คงลำดับตาม JSON เว้นแต่คุณติ๊ก เรียงคีย์
ข้อมูลของฉันเป็นส่วนตัวหรือไม่?
ใช่ ตัวแปลงทำงานในเบราว์เซอร์ของคุณและไม่ส่งคำขอเครือข่ายใด ๆ พร้อมข้อมูลของคุณ

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