ตัวแปลง YAML เป็น JSON
วาง YAML (Kubernetes manifest, Docker Compose, config ของ CI) แล้วรับ JSON ที่สะอาดทันที ข้อผิดพลาดแสดงบรรทัดที่แน่นอนพร้อมตัวชี้
ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด
วิธีใช้ YAML เป็น JSON
- วาง YAML ลงในช่องซ้าย หรือเปิดไฟล์
.yaml/.yml - JSON จะแสดงทางขวาทันทีที่คุณพิมพ์ เลือก 2 ช่องว่าง 4 ช่องว่าง หรือแท็บสำหรับผลลัพธ์
- ติ๊ก เรียงคีย์ เพื่อเรียงคีย์ตามตัวอักษร ช่วยได้เมื่อเปรียบเทียบ config
- หาก YAML ไม่ถูกต้อง แถบสถานะจะแสดงบรรทัดและคอลัมน์ และบรรทัดที่มีปัญหาจะแสดงด้านล่างพร้อมเครื่องหมาย
^ - คัดลอกหรือดาวน์โหลด JSON หรือกด สลับ เพื่อแปลงกลับเป็น YAML
YAML แมปเป็น JSON อย่างไร
JSON เป็นสับเซตของ YAML 1.2 ดังนั้น mapping ของ YAML ทุกตัวจะกลายเป็น JSON object ทุก sequence กลายเป็น array และ scalar กลายเป็นสตริง ตัวเลข boolean หรือ null ฟีเจอร์ที่มีเฉพาะใน YAML จะถูกแปลงระหว่างการแปลง:
- คอมเมนต์ (
# …) ถูกตัดออก เพราะ JSON ไม่มีคอมเมนต์ - Anchor และ alias (
&base,*base,<<: *base) ถูกขยายเป็นสำเนาเต็ม - Timestamp เช่น
2024-01-02กลายเป็นสตริง ISO 8601 - สตริงหลายบรรทัด (บล็อก literal
|และบล็อก folded>) กลายเป็นสตริงธรรมดาที่มี escape\n
YAML หลายเอกสาร
ไฟล์เดียวมีเอกสาร YAML ได้หลายชุดคั่นด้วย --- ซึ่งพบบ่อยใน Kubernetes manifest JSON ไม่มีสิ่งเทียบเท่า ตัวแปลงจึงส่งคืน JSON array ที่มีหนึ่งสมาชิกต่อหนึ่งเอกสาร และแจ้งในแถบสถานะ --- ตัวเดียวที่อยู่ท้ายไฟล์จะถูกข้าม
ข้อควรระวังระหว่าง 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 ที่สร้างขึ้นจึงอ่านได้เหมือนกันทั้งสองเวอร์ชัน
คำถามที่พบบ่อย
YAML ของฉันถูกอัปโหลดไปที่ใดหรือไม่?
ทำไม YAML ของฉันผิดพลาดด้วย “bad indentation”?
-) เยื้องอย่างสม่ำเสมอใต้คีย์แม่คอมเมนต์ของ YAML จะเป็นอย่างไร?
ทำไม <code>no</code> ยังคงเป็นสตริง?
true/false ที่เป็น boolean parser YAML 1.1 รุ่นเก่าจะเปลี่ยน no, yes, on และ off เป็น boolean (“ปัญหานอร์เวย์”)แปลง Kubernetes manifest ที่มีหลาย resource ได้ไหม?
--- จะกลายเป็นหนึ่งสมาชิกของ JSON array ผลลัพธ์ พร้อมใช้กับ jq หรือ kubectl apply -f - ซึ่งรับรายการ JSON ได้เช่นกัน