ข้ามไปที่เนื้อหา

ตัวแปลง JSON ↔ YAML

ตัวแปลง JSON ↔ YAML

แก้ไข JSON และ YAML เคียงข้างกันพร้อมการซิงค์สองทางแบบเรียลไทม์ รองรับการปรับการเยื้อง การเรียงลำดับคีย์ และการแยก YAML หลายเอกสาร เหมาะสำหรับคอนฟิก Kubernetes/Helm/CI และการดีบัก API

ตัวแปลง JSON ↔ YAML

🚀 เริ่มต้นอย่างรวดเร็ว

  • วางหรือพิมพ์ JSON ในตัวแก้ไขด้านซ้าย และ YAML ทางด้านขวาจะอัปเดตโดยอัตโนมัติ
  • คุณยังสามารถพิมพ์ YAML ทางด้านขวา และ JSON ทางด้านซ้ายจะอัปเดตโดยอัตโนมัติ
  • การซิงโครไนซ์เป็นแบบสองทิศทางอย่างสมบูรณ์ ไม่จำเป็นต้องสลับโหมด: แก้ไขด้านใดด้านหนึ่ง และอีกด้านจะอัปเดตทันที
  • ใช้แถบเครื่องมือด้านบนเพื่อตั้งค่าการเยื้อง JSON/YAML เปิดใช้งานการเรียงลำดับคีย์ และสลับเอาต์พุต YAML หลายเอกสาร
  • กด Tab ในตัวแก้ไขเพื่อแทรกการเยื้องแทนการย้ายโฟกัส
  • เครื่องมือแก้ไขแต่ละอันจะมีปุ่มคัดลอกและล้างที่มุมขวาบน การล้างด้านใดด้านหนึ่งจะเป็นการล้างทั้งสองด้าน

📌 สถานการณ์การใช้งานทั่วไป

  • การเขียน Kubernetes: แปลงรายการทรัพยากร K8s ระหว่าง YAML และ JSON เพื่อตรวจสอบโครงสร้างจากมุมมองใดมุมมองหนึ่ง
  • การดีบักค่า Helm: แปลงค่าต่างๆ.yaml เป็น JSON เพื่อตรวจสอบประเภทและซ้อนใน IDE ของคุณ
  • ไปป์ไลน์ CI/CD: แปลงตัวอย่างข้อมูลระหว่าง GitHub Actions (YAML) และระบบ CI ที่ใช้ JSON ได้อย่างรวดเร็ว
  • การดีบัก API: แปลงเพย์โหลด JSON เป็น YAML เพื่อให้ได้มุมมองแบบลำดับชั้นที่ชัดเจนยิ่งขึ้น
  • การย้ายการกำหนดค่า: แปลงไฟล์กำหนดค่าเป็นชุดระหว่าง YAML และ JSON
  • การจัดรูปแบบและการตรวจสอบความถูกต้อง: ตรวจสอบไวยากรณ์ JSON/YAML ผ่านการซิงค์แบบสองทาง พร้อมตำแหน่งข้อผิดพลาดของบรรทัด/คอลัมน์

🧭 คำแนะนำการใช้งาน

  • การเยื้อง JSON แบบ 2 ช่องว่างใช้ได้กับกรณีส่วนใหญ่ ใช้ช่องว่าง 4 ช่องสำหรับการซ้อนแบบลึกหรือไฟล์ค่า Helm
  • เปิดใช้การจัดเรียงคีย์เพื่อแสดงคีย์ของออบเจ็กต์ตามลำดับตัวอักษร ช่วยให้เปรียบเทียบความแตกต่างของการตั้งค่าได้ง่ายขึ้น
  • เมื่อรูท JSON เป็นอาร์เรย์ ให้เปิดใช้งาน YAML หลายเอกสารเพื่อแยกแต่ละองค์ประกอบออกเป็นเอกสารแยกต่างหาก (---) ซึ่งมีประโยชน์สำหรับไฟล์ K8 ที่มีทรัพยากรหลายรายการ
  • หากอินพุตไม่ถูกต้อง ตัวแก้ไขจะแสดงข้อผิดพลาดพร้อมรายละเอียดบรรทัด/คอลัมน์ อีกด้านหนึ่งจะเก็บเนื้อหาที่ถูกต้องล่าสุดไว้
  • สำหรับเนื้อหาขนาดใหญ่ ให้วางก่อนและรอการซิงค์ จากนั้นจึงแก้ไขต่อเพื่อหลีกเลี่ยงการแปลงซ้ำมากเกินไป

⚠️ ข้อจำกัดและความเข้ากันได้

  • การแยกวิเคราะห์ YAML เป็นไปตามข้อกำหนด YAML 1.2 ลักษณะการทำงานเฉพาะของ YAML 1.1 บางอย่าง (เช่น การแปลงใช่/ไม่ใช่บูลีนอัตโนมัติ) อาจแตกต่างกัน
  • หมายเลข JSON เป็นไปตามขีดจำกัด JavaScript IEEE 754 จำนวนเต็มที่เกินความแม่นยำที่ปลอดภัยแบบ 53 บิตอาจสูญเสียความแม่นยำ
  • จุดยึดและนามแฝง YAML (&, *, <<) จะถูกขยายเป็นค่าที่เป็นรูปธรรมเมื่อแปลงเป็น JSON ไม่สามารถรักษาข้อมูลอ้างอิงได้
  • ความคิดเห็น YAML จะถูกละทิ้งระหว่างการแปลงเนื่องจาก JSON ไม่รองรับความคิดเห็น

🔒 ความเป็นส่วนตัวและความปลอดภัย

  • การประมวลผลทั้งหมดเกิดขึ้นภายในเบราว์เซอร์ของคุณ ข้อมูลของคุณจะไม่ออกจากอุปกรณ์ของคุณ

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

JSON และ YAML แตกต่างกันอย่างไร และฉันควรใช้แต่ละรายการเมื่อใด

JSON และ YAML สามารถแสดงประเภทข้อมูลเดียวกันได้ (ออบเจ็กต์ อาร์เรย์ สตริง ตัวเลข) แต่ไวยากรณ์ต่างกัน: • JSON ใช้เครื่องหมายปีกกา/วงเล็บเหลี่ยมและเครื่องหมายคำพูดคู่ มีไวยากรณ์ที่เข้มงวดกว่า และไม่สนับสนุนความคิดเห็น • YAML ใช้การเยื้องสำหรับลำดับชั้น เป็นที่มนุษย์สามารถอ่านได้มากขึ้น และสนับสนุนความคิดเห็น แต่จะไวต่อช่องว่าง กฎง่ายๆ: • สำหรับ API และการแลกเปลี่ยนข้อมูลระหว่างเครื่อง แนะนำให้ใช้ JSON • สำหรับการกำหนดค่า Kubernetes/Helm/CI ที่มนุษย์แก้ไขบ่อยครั้ง แนะนำให้ใช้ YAML • คุณสามารถแปลงระหว่างข้อมูลเหล่านั้นได้โดยไม่ต้องเปลี่ยนโมเดลข้อมูล

เหตุใดใช่ / ไม่ใช่ / เปิด / ปิดใน YAML จึงกลายเป็นจริง / เท็จหลังการแปลง

สิ่งนี้มาจากพฤติกรรม YAML 1.1 แบบเดิม โดยที่ yes/no/on/off/y/n อาจถูกแยกวิเคราะห์เป็นบูลีน เครื่องมือนี้เป็นไปตาม YAML 1.2 โดยที่เฉพาะจริง/เท็จเท่านั้นที่เป็นบูลีน หากคุณต้องการค่าสตริง ให้ใส่เครื่องหมายคำพูด (เช่น "ใช่")

เหตุใดความคิดเห็น YAML จึงหายไปหลังจากแปลงเป็น JSON

JSON (RFC 8259) ไม่อนุญาตให้แสดงความคิดเห็น ดังนั้นความคิดเห็นของ YAML จึงไม่สามารถรักษาไว้ในการแปลง YAML → JSON ได้ และไม่สามารถสร้างขึ้นใหม่ได้เมื่อแปลงกลับ เก็บไฟล์ YAML ต้นฉบับไว้หากความคิดเห็นมีความสำคัญ

--- หมายถึงอะไรใน YAML

--- เป็นตัวแยกเอกสารของ YAML ซึ่งใช้เพื่อจัดเก็บเอกสารอิสระหลายชุดไว้ในไฟล์เดียว ซึ่งเป็นเรื่องปกติใน Kubernetes โดยที่ไฟล์หนึ่งสามารถมีคำจำกัดความ Deployment, Service และ ConfigMap ได้ เครื่องมือนี้อ่าน YAML หลายเอกสารเป็นอาร์เรย์ JSON และยังสามารถแยกอาร์เรย์ JSON กลับเป็นเอกสาร YAML ที่แยก --- แยกกัน

ฉันควรทำอย่างไรหากความแม่นยำของตัวเลขหายไปหลังการแปลง

JavaScript ใช้ตัวเลขความแม่นยำสองเท่าของ IEEE 754 จำนวนเต็มปลอดภัยมีตั้งแต่ -(2^53-1) ถึง 2^53-1 (±9007199254740991) จำนวนเต็มที่มากกว่า (เช่น Snowflake ID หรือการประทับเวลา 64 บิต) อาจสูญเสียความแม่นยำ หากต้องการรักษาค่าที่แน่นอน ให้จัดเก็บเป็นสตริง เช่น "9007199254740992"

จะเกิดอะไรขึ้นกับจุดยึด YAML (& และ *) ระหว่างการแปลง

จุดยึด (&ชื่อ) และนามแฝง (*ชื่อ) เป็นคุณลักษณะการใช้ซ้ำเฉพาะของ YAML JSON ไม่มีกลไกการอ้างอิงที่เทียบเท่า ดังนั้นชื่อแทนจึงขยายเป็นสำเนาเต็มระหว่างการแปลง นี่เป็นการเปลี่ยนแปลงที่สูญเสียไป และโครงสร้างจุดยึดเดิมไม่สามารถกู้คืนได้โดยอัตโนมัติ