แปลงฟรี

YAML ถึง ตัวแปลง JSON

การแปลง YAML เป็น JSON ที่รวดเร็วและปลอดภัย เหมาะสำหรับไฟล์การกำหนดค่าและการวิเคราะห์ข้อมูล

หรือ

เกี่ยวกับเครื่องมือนี้

YAML และ JSON เป็นรูปแบบที่เกี่ยวข้องกันอย่างใกล้ชิด โดยทางเทคนิคแล้ว JSON นั้นเป็นชุดย่อยที่เข้มงวดของ YAML 1.2 และการแปลงระหว่างรูปแบบเหล่านี้มักจะตรงไปตรงมา YAML เพิ่มคุณสมบัติที่เป็นมิตรต่อมนุษย์ซึ่ง JSON ขาด: ความคิดเห็น สตริงหลายบรรทัดที่ไม่มีการ Escape การอ้างอิงจุดยึดและนามแฝง การอ้างอิงที่ยืดหยุ่นมากขึ้น และโครงสร้างตามการเยื้องที่มีลักษณะคล้ายกับเค้าโครงเอกสารทั่วไป สิ่งนี้ทำให้ YAML เป็นตัวเลือกยอดนิยมสำหรับไฟล์การกำหนดค่า (รายการ Kubernetes, เวิร์กโฟลว์ GitHub Actions, Docker Compose) ในขณะที่ JSON ครอบงำเพย์โหลด API

โดยทั่วไปการแปลง YAML เป็น JSON หมายถึงการละทิ้งคุณสมบัติพิเศษที่เป็นมิตรต่อมนุษย์ของ YAML เพื่อแลกกับรูปแบบที่เครื่องแยกวิเคราะห์ได้ง่ายขึ้น และนั่นคือภาษากลางของ HTTP API ความคิดเห็นถูกละทิ้ง (JSON ไม่มี) การอ้างอิงจุดยึดได้รับการแก้ไขเป็นค่าอ้างอิง สตริงหลายบรรทัดจะยุบเป็นสตริง JSON มาตรฐานที่มีการขึ้นบรรทัดใหม่แบบฝัง

ตัวแปลงนี้แยกวิเคราะห์ YAML โดยใช้ js-yaml ซึ่งเป็นไลบรารี YAML ที่ใช้กันอย่างแพร่หลายที่สุดใน JavaScript เอาต์พุตถูกสร้างขึ้นโดยใช้ JSON.stringify พร้อมการเยื้องเพิ่มเติม การแปลงจะจัดการไวยากรณ์ YAML 1.2 มาตรฐานทั้งหมด รวมถึงรูปแบบโฟลว์ สไตล์บล็อก สเกลาร์ ลำดับ การแมป จุดยึด นามแฝง และประเภทแท็กมาตรฐาน

เหตุใดจึงต้องแปลง YAML เป็น JSON

API ส่วนใหญ่และสภาพแวดล้อมการเขียนโปรแกรมจำนวนมากคาดหวัง JSON ไฟล์การกำหนดค่าที่เขียนด้วย YAML จะต้องแปลงเป็น JSON เมื่อผสานรวมกับโค้ดหรือบริการที่ยอมรับเฉพาะ JSON เท่านั้น เครื่องมือสำหรับ JSON ยังมีอีกมากมาย: jq, JSON Path, JSON Schema และระบบนิเวศที่หลากหลายของเครื่องมือตรวจสอบความถูกต้องและหม้อแปลง ล้วนรับอินพุต JSON

JSON ก็ไม่คลุมเครือในลักษณะที่ YAML ไม่ใช่ ความยืดหยุ่นของ YAML สร้างความประหลาดใจในการแยกวิเคราะห์ - สตริงเช่น 'ไม่' แยกวิเคราะห์เป็นเท็จบูลีนใน YAML 1.1, สตริงเวอร์ชันแยกวิเคราะห์เป็นแบบลอยตัว, ข้อผิดพลาดในการเยื้องทำให้เกิดการเปลี่ยนแปลงโครงสร้างโดยไม่โต้ตอบ การแปลงเป็น JSON จะทำให้ข้อมูลค้างอยู่ในรูปแบบที่มีความกำกวมน้อยลง

วิธีใช้งาน

วาง YAML รับ JSON

  1. เพิ่ม YAML ของคุณ: วางข้อความ YAML ลงในพื้นที่ป้อนข้อมูลหรือวางไฟล์ .yml/.yaml js-yaml ยอมรับไวยากรณ์ YAML 1.2 แบบเต็ม
  2. แปลง: js-yaml แยกวิเคราะห์ YAML ลงในอ็อบเจ็กต์ JavaScript และ JSON.stringify จะทำให้เป็นอนุกรมด้วยการเว้นวรรคสองช่อง ความคิดเห็นจะหายไป จุดยึดได้รับการแก้ไข และประเภท YAML พิเศษ (การประทับเวลา ข้อมูลไบนารี) จะถูกแปลงเป็นรูปแบบที่เข้ากันได้กับ JSON
  3. ตรวจสอบผลลัพธ์: ยืนยันว่าโครงสร้าง JSON ตรงกับที่คุณคาดหวัง เปรียบเทียบกับ YAML ต้นทางเพื่อค้นหาตำแหน่งใดๆ ที่การพิมพ์แบบหลวมๆ ของ YAML สร้างค่า JSON ที่ไม่คาดคิด
  4. ดาวน์โหลดหรือคัดลอก: บันทึกเป็น .json หรือคัดลอกไปยังคลิปบอร์ด เอาต์พุตเป็น JSON ที่ถูกต้องซึ่งใช้โดยตัวแยกวิเคราะห์ JSON ใดๆ

กรณีการใช้งานทั่วไป

รายละเอียดทางเทคนิค

js-yaml ใช้ YAML 1.2 พร้อมการสนับสนุนเพิ่มเติมสำหรับลักษณะเฉพาะของ YAML 1.1 (ปัญหา 'no'-as-false เลขฐานแปดที่ไม่มีคำนำหน้า 0o) parser สร้างแผนผังอ็อบเจ็กต์ JavaScript โดยใช้ประเภทดั้งเดิม: ตัวเลข สตริง บูลีน ค่าว่าง อาร์เรย์ และอ็อบเจ็กต์ธรรมดา

JSON.stringify ทำให้แผนผังวัตถุเป็นอนุกรมเป็น JSON การเยื้องเสริมทำให้ได้งานพิมพ์ที่สวยงาม หากไม่มีผลลัพธ์ที่ได้คือ JSON บรรทัดเดียวขนาดกะทัดรัด ค่าพิเศษ (NaN, Infinity, ไม่ได้กำหนด) ไม่ใช่ JSON ที่ถูกต้อง ตัวแปลงจะบังคับให้เป็นโมฆะหากมีอยู่

กรณี Edge: การประทับเวลา YAML กลายเป็นสตริง ISO-8601 ใน JSON ข้อมูลไบนารี YAML (เข้ารหัส base64) จะกลายเป็นสตริง จุดยึดและนามแฝงได้รับการแก้ไขเป็นค่าที่ซ้ำกันใน JSON เนื่องจาก JSON ไม่มีไวยากรณ์อ้างอิง

แนวทางปฏิบัติที่ดีที่สุด

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

การแปลง YAML เป็น JSON เปลี่ยนเนื้อหาหรือไม่
เนื้อหาจะถูกเก็บรักษาไว้อย่างถูกต้องที่สุด อย่างไรก็ตาม คุณลักษณะเฉพาะบางรูปแบบอาจไม่เทียบเท่าโดยตรง ดังนั้นการจัดรูปแบบเล็กน้อยจึงอาจเกิดขึ้นได้
เหตุใดจึงต้องแปลงข้อมูลเป็นรูปแบบ JSON
JSON เป็นรูปแบบข้อมูลมาตรฐานสำหรับเว็บ API และแอปพลิเคชัน JavaScript เป็นภาษาโปรแกรมที่มนุษย์สามารถอ่านได้ รองรับอย่างกว้างขวาง และมีไวยากรณ์ที่ง่ายกว่า XML
ตัวแปลงจัดการโครงสร้าง YAML ที่ซ้อนกันหรือซับซ้อนหรือไม่
ใช่. เครื่องมือนี้แยกวิเคราะห์ออบเจ็กต์ที่ซ้อนกัน อาร์เรย์ และประเภทข้อมูล YAML มาตรฐานทั้งหมดอย่างถูกต้อง โดยคงโครงสร้างข้อมูลทั้งหมดไว้ในเอาต์พุต JSON
การแปลงนี้ปลอดภัยและเป็นส่วนตัวหรือไม่?
ใช่. การประมวลผลทั้งหมดเกิดขึ้นภายในเบราว์เซอร์ของคุณ ข้อมูลของคุณจะไม่ออกจากอุปกรณ์ของคุณ ไม่มีการอัปโหลดเซิร์ฟเวอร์ ไม่มีการประมวลผลบนคลาวด์ ไม่มีการรวบรวมข้อมูล
YAML ของฉันจะเดินทางไปกลับอย่างหมดจดหรือไม่
ใช่ตามโครงสร้าง หากคุณส่ง JSON กลับไปยัง YAML อีกครั้ง ความคิดเห็นและโครงสร้างจุดยึดจะหายไป ค่าดิบจะถูกเก็บรักษาไว้
ข้อมูลของฉันถูกอัพโหลดไปยังเซิร์ฟเวอร์หรือไม่?
ไม่ js-yaml ทำงานในเบราว์เซอร์ของคุณ
ขนาดสูงสุดคือเท่าไร?
สูงสุด 50 เมกะไบต์ js-yaml จัดการไฟล์การกำหนดค่าทั่วไปได้ทันที YAML ที่มีขนาดใหญ่มากอาจใช้เวลาในการแยกวิเคราะห์อย่างเห็นได้ชัด
รองรับ YAML หลายเอกสารหรือไม่
YAML รองรับเอกสารหลายฉบับในไฟล์เดียวโดยคั่นด้วย --- ตัวแปลงจะประมวลผลเอกสารแรกตามค่าเริ่มต้น สำหรับการจัดการหลายเอกสาร ให้แยก YAML ก่อน