แปลง JSON เป็น YAML และ YAML เป็น JSON ในเบราว์เซอร์ของคุณ
JSON และ YAML อธิบายข้อมูลประเภทเดียวกัน ได้แก่ Map แบบซ้อน รายการ String ตัวเลข และ Boolean แต่ดูต่างกันมากและใช้ในที่ต่างกัน หากคุณทำงานกับ API ไฟล์ Container หรือ CI Pipeline คุณจะต้องแปลงหนึ่งเป็นอีกอย่างในที่สุด หน้านี้ทำการแปลงทั้งสองทาง ทั้งหมดภายในเบราว์เซอร์ของคุณ ดังนั้นข้อมูลที่คุณวางจะไม่ออกจากเครื่องของคุณ

JSON คืออะไรและอยู่ที่ไหน
JSON (JavaScript Object Notation) เป็นฟอร์แมตแบบเคร่งครัดด้วยวงเล็บและ Brace ที่สร้างขึ้นสำหรับเครื่องก่อน ทุก Object ถูกห่อด้วย {} ทุก Array ด้วย [] Key และค่า String มีเครื่องหมายคำพูดคู่ และรายการคั่นด้วยจุลภาค มันเป็นฟอร์แมต Wire เริ่มต้นสำหรับ REST และ GraphQL API เนื้อหาของ Webhook ส่วนใหญ่ รูปร่างของเอกสาร NoSQL และสิ่งที่ Fetch Call ของคุณส่งกลับ เกือบทุกภาษา Parse มันได้นอกกล่อง ซึ่งเป็นสาเหตุที่มันชนะ API Layer JSON.parse ใน JavaScript, json ใน Python Standard Library และเทียบเท่าทุกที่ การแลกเปลี่ยนคือ JSON ละเอียดเมื่อเขียนด้วยมือและห้ามคอมเมนต์ จึงเป็นฟอร์แมตที่ไม่ดีสำหรับไฟล์ที่มนุษย์แก้ไขตลอดวัน
YAML คืออะไรและอยู่ที่ไหน
YAML (YAML Ain't Markup Language) ถูกออกแบบสำหรับลำดับความสำคัญตรงข้าม มนุษย์ก่อน มันตัดวงเล็บและเครื่องหมายคำพูด ใช้ Indentation เพื่อแสดงการซ้อน และอนุญาตให้เขียนคอมเมนต์ด้วย # ความสามารถในการอ่านนั้นคือสาเหตุที่มันกลายเป็นภาษากลางของการกำหนดค่า ไฟล์ Docker Compose, Kubernetes Manifest, GitHub Actions และ GitLab CI Workflow, Ansible Playbook และไฟล์ Config แอปนับไม่ถ้วนล้วนเป็น YAML เอกสาร YAML ทั่วไปสั้นกว่า JSON ที่เทียบเท่าอย่างเห็นได้ชัดและ Diff ได้ง่ายกว่ามากใน Pull Request ราคาของความสง่างามนั้นคือความเปราะบาง ซึ่งเป็นจุดที่การแปลงน่าสนใจ
ความแตกต่างสำคัญที่มีผลต่อการแปลง
ความแตกต่างสามอย่างขับเคลื่อนการตัดสินใจการแปลงเกือบทุกครั้ง ประการแรก Whitespace มีความหมายใน YAML และไม่มีความหมายใน JSON YAML ใช้ Space ไม่ใช่ Tab เพื่อแสดงโครงสร้าง ดังนั้น Space ที่ไม่ตรงแนวเพียงอันเดียวอาจเปลี่ยนความหมายของเอกสารโดยไม่รู้ตัว JSON ไม่สนใจ Indentation เลย ประการที่สอง YAML รองรับคอมเมนต์และ JSON ไม่รองรับ คอมเมนต์ # ใน YAML จะหายไปเมื่อสร้าง JSON เพราะไม่มีที่วาง ประการที่สาม YAML มีการกำหนดชนิดข้อมูลอย่างอิสระที่หลากหลายกว่า มันอ่านวันที่ Timestamp และ null ได้หลายรูปแบบ และเดาชนิดข้อมูลจากค่าที่ไม่มีเครื่องหมายคำพูด JSON มีชุดชนิดข้อมูลที่เล็กและชัดเจนโดยไม่มีความคลุมเครือ โปรดทราบว่า JSON เป็น Subset ของ YAML 1.2 ในทางเทคนิค ซึ่งเป็นสาเหตุที่ JSON ที่ถูกต้องมักถูก Parse เป็น YAML ได้ แต่ในทางกลับกันไม่รับประกัน

สิ่งที่ควรระวังในการแปลง
การ Round-trip ไม่ได้ Lossless เสมอ และคุ้มค่าที่จะรู้ว่าอะไรพัง:
- ปัญหา Norway ภายใต้กฎ YAML 1.1
NOที่ไม่มีเครื่องหมายคำพูดจะถูก Parse เป็น Booleanfalseและyes,onและoffกลายเป็น Boolean ด้วย รหัสประเทศหรือป้าย Switch สามารถพลิกเป็นtrue/falseก่อนที่คุณจะสังเกต ใส่เครื่องหมายคำพูดสำหรับค่าที่คุณหมายถึงเป็น String - การบังคับชนิดตัวเลข เวอร์ชันอย่าง
3.10อาจสูญเสีย 0 ท้ายและกลายเป็น3.1และ1.0กลายเป็นตัวเลขแม้คุณต้องการข้อความ ใส่เครื่องหมายคำพูดสำหรับ String เวอร์ชันและ ID - Anchor และ Alias หายไป การอ้างอิง
&anchorและ*aliasของ YAML ไม่มีเทียบเท่าใน JSON โปรแกรมแปลงที่ดีจะ Expand เป็นค่าเต็มของมัน ดังนั้นข้อมูลถูกต้องแต่การขจัดซ้ำหายไป JSON เป็น YAML เป็น JSON จะไม่สร้าง Anchor เดิมขึ้นมาใหม่ - คอมเมนต์และ Block Scalar คอมเมนต์จะถูกทิ้งเมื่อไปยัง JSON Block Scalar หลายบรรทัด (
|และ>) จะ Collapse เป็น JSON String ธรรมดาด้วย\nEscape ทำให้ความตั้งใจในการจัดรูปแบบภาพสูญหาย - Indentation เมื่อกลับเป็น YAML JSON ไม่เข้ารหัส Indentation ดังนั้นโปรแกรมแปลงจะเลือกสไตล์ที่สม่ำเสมอ ตรวจสอบก่อนวางในเครื่องมือที่ไวต่อ Tab
ทำไมเฉพาะในเครื่องจึงสำคัญ
ไฟล์ Config และ API Payload คือสิ่งที่ไม่ควรอัปโหลดไปยังเซิร์ฟเวอร์แบบสุ่ม มักมี Hostname, Token, ชื่อ Service ภายใน หรือข้อมูลลูกค้า โปรแกรมแปลงนี้รัน Parse-and-emit ในเบราว์เซอร์ด้วย JavaScript ไม่มีการส่งไปยัง Backend ไม่มีการบันทึก และเครื่องมือทำงานออฟไลน์เมื่อเพจโหลดแล้ว วาง Kubernetes Secret หรือ CI Workflow ด้วยความมั่นใจว่ามันอยู่บนเครื่องของคุณ
ต้องการเครื่องมือที่เกี่ยวข้อง? ดู ตัวแปลงข้อมูล ทั้งชุด ทำความสะอาด Input ที่ยุ่งเหยิงด้วย JSON Formatter และกลับมาที่นี่เมื่อต้องการเคลื่อนระหว่างโลก API และโลก Config
คำถามที่พบบ่อย
ข้อมูลของฉันถูกอัปโหลดที่ไหนหรือไม่?
ไม่ การแปลงเกิดขึ้นทั้งหมดในเบราว์เซอร์โดยใช้ JavaScript ในเครื่อง JSON หรือ YAML ของคุณไม่เคยถูกส่งไปยังเซิร์ฟเวอร์ ดังนั้น Secret และไฟล์ Config ยังคงเป็นส่วนตัว
ทำไมค่า YAML true หรือ false ของฉันถึงเปลี่ยนไปโดยไม่คาดคิด?
YAML 1.1 ถือว่าคำที่ไม่มีเครื่องหมายคำพูดอย่าง yes, no, on และ off เป็น Boolean ซึ่งเรียกว่าปัญหา Norway ห่อค่าที่คุณหมายถึงเป็น String ด้วยเครื่องหมายคำพูดเพื่อให้อยู่รอดการแปลงเป็นข้อความ
คอมเมนต์ของฉันจะเกิดอะไรขึ้นเมื่อแปลง YAML เป็น JSON?
JSON ไม่มีไวยากรณ์คอมเมนต์ ดังนั้นคอมเมนต์ Hash ทั้งหมดจะถูกลบในระหว่างการแปลง หากต้องการรักษาบันทึก ให้เก็บสำเนาหลักไว้ใน YAML
YAML Anchor และ Alias ถูกรักษาไว้หรือไม่?
จะถูก Expand เป็นค่าเต็มเพราะ JSON ไม่มีกลไกอ้างอิง ข้อมูลยังถูกต้อง แต่การขจัดซ้ำไม่สามารถกู้คืนได้เมื่อแปลงกลับเป็น YAML
ฉันสามารถแปลง JSON เป็น YAML รวมทั้ง YAML เป็น JSON ได้หรือไม่?
ใช่ เครื่องมือทำงานได้ทั้งสองทิศทาง วาง JSON เพื่อรับ YAML หรือวาง YAML เพื่อรับ JSON และโปรแกรมแปลงจะตรวจจับและสร้างฟอร์แมตอื่น
ทำไม YAML จึงพังเมื่อฉันใช้ Tab?
YAML ต้องการ Space สำหรับ Indentation และปฏิเสธ Tab หาก Paste ไม่ Parse ได้ ให้แทนที่อักขระ Tab ด้วย Space และรักษา Indentation ให้สม่ำเสมอ
