ข้ามไปยังเนื้อหา

แปลงรูปแบบ YAML เป็น JSON

อ่านเอกสาร YAML หนึ่งฉบับด้วยไลบรารี yaml (สคีมา core ของ YAML 1.2) แล้วส่งออกเป็น JSON แบบเยื้อง ลบคอมเมนต์ ขยาย anchors และ aliases และคงค่าอย่าง yes หรือ 2024-01-01 เป็นสตริง

ส่งการตั้งค่าที่เขียนด้วย YAML ไปยัง API หรือตัวตรวจสอบ JSON Schema ที่รับเฉพาะ JSON

YAML

JSON

เหมาะกับงานแบบไหน

  • ส่งการตั้งค่าที่เขียนด้วย YAML ไปยัง API หรือตัวตรวจสอบ JSON Schema ที่รับเฉพาะ JSON
  • ตรวจชนิดข้อมูลจริงในไฟล์ CI หรือ Kubernetes เช่น เวอร์ชันเป็นสตริงหรือตัวเลข

วิธีใช้

  1. วางเอกสาร YAML เดียวหรือโหลดไฟล์ .yaml/.yml
  2. หากมีข้อผิดพลาด ให้ตรวจการเยื้อง คีย์ซ้ำ และตัวคั่น --- ที่บรรทัดที่แจ้ง
  3. ตรวจสตริงและตัวเลขในผลลัพธ์ JSON แล้วคัดลอก

ข้อมูลเข้า YAML

# deployment settings
service: billing-api
replicas: 2
version: "1.10"
enabled: yes
ports:
  - 80
  - 443
env:
  LOG_LEVEL: info

JSON

{
  "service": "billing-api",
  "replicas": 2,
  "version": "1.10",
  "enabled": "yes",
  "ports": [
    80,
    443
  ],
  "env": {
    "LOG_LEVEL": "info"
  }
}

รายละเอียดและข้อจำกัด

อ่านข้อมูลในเบราว์เซอร์ ผลลัพธ์เป็น JSON เยื้อง 2 ช่องว่างเสมอ ไม่มีตัวเลือกย่อข้อมูล

ใช้กฎ YAML 1.2 โดย yes/no/on/off เป็นสตริง ไม่ใช่บูลีน และวันที่ที่ไม่ครอบเครื่องหมายคำพูดยังเป็นสตริง ส่วน 0o17 เป็นเลขฐานแปด (15)

คีย์รวม (<<: *anchor) จะไม่ถูกรวม แต่แสดงเป็นคีย์ "<<" ตามตัวอักษร คีย์ซ้ำใน mapping เดียวถือเป็นข้อผิดพลาด

จำนวนเต็มที่เกิน 2^53 สูญเสียความแม่นยำใน JSON ควรครอบ ID ยาวด้วยเครื่องหมายคำพูดใน YAML

FAQ

แปลงไฟล์ที่มีหลายเอกสารคั่นด้วย --- ได้หรือไม่?

ไม่ได้ หลายเอกสารทำให้เกิดข้อผิดพลาด "Source contains multiple documents" ให้วางทีละเอกสาร โดยมี --- นำหน้าเพียงตัวเดียวได้

ทำไม enabled: yes จึงเป็นสตริงใน JSON?

ตัวแยกวิเคราะห์ใช้ YAML 1.2 ซึ่งมีเพียง true และ false ที่เป็นบูลีน เขียน true/false หากต้องการบูลีน JSON

รองรับ anchors และ aliases หรือไม่?

รองรับ alias เช่น *base จะถูกแทนด้วยสำเนาของค่าที่ anchor อ้างถึง แต่ไม่ใช้คีย์รวม << ของ YAML 1.1

ข้อกำหนดและแหล่งอ้างอิง