ตัวแปลง JSON ↔ YAML
ตัวแปลง JSON ↔ YAML
แก้ไข JSON และ YAML เคียงข้างกันพร้อมการซิงค์สองทางแบบเรียลไทม์ รองรับการปรับการเยื้อง การเรียงลำดับคีย์ และการแยก YAML หลายเอกสาร เหมาะสำหรับคอนฟิก Kubernetes/Helm/CI และการดีบัก API
🚀 เริ่มต้นอย่างรวดเร็ว
- วางหรือพิมพ์ 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 ไม่มีกลไกการอ้างอิงที่เทียบเท่า ดังนั้นชื่อแทนจึงขยายเป็นสำเนาเต็มระหว่างการแปลง นี่เป็นการเปลี่ยนแปลงที่สูญเสียไป และโครงสร้างจุดยึดเดิมไม่สามารถกู้คืนได้โดยอัตโนมัติ