ตัวแปลง JSON เป็น YAML
เปลี่ยน JSON เป็น YAML ที่สะอาดและอ่านง่ายสำหรับ Kubernetes, Docker Compose, GitHub Actions หรือ Ansible พร้อมควบคุมการเยื้อง สไตล์ และอัญประกาศได้เต็มที่
ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด
วิธีใช้ JSON เป็น YAML
- วาง JSON ลงในช่องซ้าย หรือเปิดไฟล์
.json - YAML จะแสดงทางขวาทันทีที่คุณพิมพ์
- เลือกการเยื้อง (2 หรือ 4 ช่องว่าง) และสไตล์: block (หนึ่งคีย์ต่อบรรทัด) หรือ flow (
{a: 1}/[x, y]) ตั้งแต่ระดับการซ้อนที่กำหนด - เลือกรูปแบบอัญประกาศ และติ๊ก เรียงคีย์ หากต้องการเรียงตามตัวอักษร
- คัดลอกหรือดาวน์โหลด 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 ที่สร้างขึ้นจึงอ่านได้เหมือนกันทั้งสองเวอร์ชัน
คำถามที่พบบ่อย
การแปลงไม่สูญเสียข้อมูลใช่ไหม?
ทำไมบางสตริงมีอัญประกาศแต่บางสตริงไม่มี?
'yes', '123' หรือสตริงที่มีอักขระพิเศษ ส่วนที่เหลือจะคงไว้แบบธรรมดาเพื่อให้อ่านง่ายเพิ่มคอมเมนต์ในผลลัพธ์ได้ไหม?
# comments ใน YAML ได้หลังจากคัดลอก