T

Text Machine

เครื่องมือข้อความทรงพลัง ในเบราว์เซอร์ของคุณ

ตัวแปลง JSON ↔ YAML

แปลง JSON เป็น YAML และแปลง YAML กลับเป็น JSON ได้ในเบราว์เซอร์ของคุณโดยตรง วางรูปแบบใดก็ได้เพื่อรับผลลัพธ์ที่สะอาดและจัดเยื้องอย่างถูกต้อง — เหมาะอย่างยิ่งสำหรับไฟล์คอนฟิก ไปป์ไลน์ CI และ Kubernetes manifest

การเยื้อง

อินพุต JSON
เอาต์พุต YAML

ป้อนข้อมูลด้านบนเพื่อดูผลลัพธ์ที่แปลงแล้วตรงนี้

วิธีใช้ ตัวแปลง JSON เป็น YAML

  1. 1

    เลือกทิศทาง

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

  2. 2

    วางข้อมูลของคุณ

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

  3. 3

    เลือกการเยื้อง

    เลือกการเยื้องแบบ 2 หรือ 4 ช่องว่างให้เข้ากับสไตล์ของโปรเจกต์คุณ ผลลัพธ์จะสะอาดและจัดเยื้องอย่างถูกต้องไม่ว่าจะเป็นรูปแบบใด

  4. 4

    คัดลอกผลลัพธ์

    ตรวจดูผลลัพธ์ที่แปลงแล้วและคัดลอกไปยังคลิปบอร์ด พร้อมนำไปวางในไฟล์คอนฟิก ไปป์ไลน์ หรือโค้ดของคุณ

จาก JSON สู่ YAML: คอนฟิกที่สะอาดขึ้นโดยไม่ตกหลุมพราง

YAML เป็นซูเปอร์เซ็ตของ JSON

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

เพราะแบบจำลองข้อมูลของทั้งสองสอดคล้องกันอย่างใกล้ชิด — ทั้งคู่มีแมป ซีเควนซ์ สตริง ตัวเลข บูลีน และ null — การแปลงระหว่างกันจึงเป็นกระบวนการตรงไปตรงมาและไม่สูญเสียค่าข้อมูลใด ๆ การแปลงเป็นเพียงการแสดงต้นไม้ข้อมูลชุดเดิมในไวยากรณ์พื้นผิวที่ต่างออกไป สิ่งเดียวที่รอดผ่านการแปลงไป-กลับของ JSON ไม่ได้คือคอมเมนต์ เพราะ JSON ไม่มีที่ให้วางมัน

การเยื้องคือไวยากรณ์

ใน YAML ช่องว่างไม่ใช่แค่เรื่องความสวยงาม — มันคือโครงสร้าง การซ้อนชั้นแสดงด้วยการเยื้องคีย์ลูกให้ลึกกว่าคีย์แม่ และรายการที่อยู่ในระดับความลึกเดียวกันต้องเยื้องเท่ากัน แมปที่ซ้อนอยู่ใต้คีย์จะกลายเป็นชุดของบรรทัดที่เยื้องเข้าไปอยู่ใต้คีย์นั้น ส่วนลิสต์จะกลายเป็นบรรทัดที่แต่ละบรรทัดขึ้นต้นด้วยขีดกลาง หากเยื้องผิด คุณก็เปลี่ยนความหมาย ไม่ใช่แค่หน้าตา ซึ่งตรงกันข้ามกับวิธีที่ JSON จัดการกับช่องว่าง

เลือกความกว้างของการเยื้องให้สม่ำเสมอ — 2 ช่องว่างคือค่าเริ่มต้นที่ใช้กันทั่วไปสำหรับไฟล์คอนฟิก ส่วน 4 ช่องว่างคือสไตล์ของบางองค์กร — แล้วใช้แบบเดียวกันทุกที่ ตัวแปลงนี้ให้ผลลัพธ์ที่เยื้องสะอาดและสม่ำเสมอ คุณจึงเริ่มต้นจากพื้นฐานที่ถูกต้องแทนที่จะต้องมานั่งจัดบรรทัดด้วยมือเอง

ห้ามใช้แท็บ

นี่คือกฎที่ดักแทบทุกคนในครั้งแรก ข้อกำหนดของ YAML ห้ามใช้อักขระแท็บสำหรับการเยื้องอย่างชัดเจน คุณต้องใช้ช่องว่างเท่านั้น เอดิเตอร์ที่ตั้งค่าให้แทรกแท็บเมื่อคุณกดปุ่ม Tab จะสร้างไฟล์ที่แยกวิเคราะห์ไม่ผ่านอย่างเงียบ ๆ และมักให้ข้อความแสดงข้อผิดพลาดที่ชี้ไปผิดจุด เพราะตัวแยกวิเคราะห์เพิ่งสังเกตว่าโครงสร้างพังก็ต่อเมื่อเลื่อนไปอีกหนึ่งหรือสองบรรทัดแล้ว

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

ปัญหา Norway และบูลีนที่โผล่มาแบบไม่คาดคิด

ตัวแยกวิเคราะห์ YAML รุ่นเก่าตีความคำเปล่า ๆ หลากหลายอย่างน่าตกใจว่าเป็นบูลีน: ไม่ใช่แค่ true และ false เท่านั้น แต่รวมถึง yes, no, on และ off ในรูปแบบตัวพิมพ์ใหญ่เล็กต่าง ๆ ด้วย หายนะคลาสสิกคือลิสต์ของรหัสประเทศที่รายการของนอร์เวย์ ซึ่งเขียนเป็นตัวอักษรเปล่า ๆ ว่า n และ o ถูกอ่านเป็นบูลีน false แล้วหายไปจากข้อมูลของคุณอย่างเงียบ ๆ แฟล็กแบบเปิด-ปิดที่เขียนว่า on หรือ off ก็พลิกชนิดข้อมูลได้ในแบบเดียวกัน

เกราะป้องกันคือการใส่เครื่องหมายอัญประกาศ สตริงใด ๆ ที่อาจถูกเข้าใจผิดว่าเป็นบูลีน ตัวเลข วันที่ หรือ null ควรครอบด้วยเครื่องหมายอัญประกาศ เพื่อให้ตัวแยกวิเคราะห์คงมันไว้เป็นข้อความ ตัวแยกวิเคราะห์สมัยใหม่ที่สร้างขึ้นรอบ ๆ สคีมาแบบปลอดภัยจะเข้มงวดกว่าและเกิดปัญหานี้ได้ยากกว่ามาก แต่นิสัยการใส่อัญประกาศให้กับสเกลาร์ที่กำกวมก็ยังคุ้มค่าที่จะรักษาไว้ โดยเฉพาะกับรหัสสั้น ๆ สตริงที่ดูคล้ายเลขเวอร์ชัน และอะไรก็ตามที่มาจากผู้ใช้

หลุมพรางสเกลาร์อื่น ๆ: ตัวเลข เลขศูนย์นำหน้า และ null

ค่าเปล่า ๆ อีกไม่กี่อย่างก็ทำคนแปลกใจได้ รหัสไปรษณีย์หรือหมายเลขชิ้นส่วนที่มีเลขศูนย์นำหน้าอาจถูกอ่านเป็นตัวเลขแล้วทำให้ศูนย์หายไป หรือถูกตีความเป็นเลขฐานแปดในตัวแยกวิเคราะห์บางตัว สตริงเลขเวอร์ชันอย่าง 1.20 อาจถูกแปลงเป็นตัวเลข 1.2 ทำให้ศูนย์ท้ายหายไป คำว่า null ค่าว่างเปล่า และเครื่องหมาย tilde เดี่ยว ๆ ล้วนหมายถึง null เช่นเดียวกับกับดักบูลีน วิธีแก้ก็เหมือนกัน: ใส่อัญประกาศให้กับอะไรก็ตามที่รูปแบบข้อความของมันมีความสำคัญ

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

YAML อยู่ที่ไหนจริง ๆ

ความอ่านง่ายของ YAML ทำให้มันกลายเป็นภาษากลางของเครื่องมือด้านโครงสร้างพื้นฐานและ CI ไฟล์ Docker Compose, Kubernetes manifest, ไปป์ไลน์ของ GitHub Actions และ GitLab CI, playbook ของ Ansible และไฟล์คอนฟิกของแอปพลิเคชันนับไม่ถ้วนล้วนเป็น YAML ทั้งสิ้น ในทุกกรณีเหล่านี้ คอมเมนต์และ diff ที่สะอาดซึ่ง YAML เอื้อให้ คือข้อได้เปรียบที่แท้จริงเมื่อมนุษย์ต้องตรวจทานการเปลี่ยนแปลงคอนฟิกของระบบโปรดักชัน

ในทางกลับกัน JSON ยังคงเหมาะกว่าสำหรับการแลกเปลี่ยนข้อมูลระหว่างเครื่องกับเครื่องผ่าน API ซึ่งความเข้มงวดและการไม่ต้องสนใจช่องว่างของมันช่วยลดความกำกวม รูปแบบที่พบได้ทั่วไปคือการเขียนและแก้ไขด้วย YAML เพื่อความสบายของมนุษย์ แล้วแปลงเป็น JSON เมื่อเครื่องมือหรือปลายทางต้องการ — ซึ่งนี่แหละคือเหตุผลที่ตัวแปลงนี้ทำงานได้ทั้งสองทิศทาง

บล็อกสไตล์ โฟลว์สไตล์ และการอ่านผลลัพธ์

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

เมื่อคุณแปลงที่นี่ ให้วาง JSON เลือกความกว้างของการเยื้อง แล้วตรวจทานผลลัพธ์แบบบล็อกสไตล์ก่อนนำไปวางในที่เก็บโค้ด ทุกอย่างเกิดขึ้นภายในเบราว์เซอร์ของคุณ ความลับในไฟล์คอนฟิก — โทเคน สตริงการเชื่อมต่อ ชื่อโฮสต์ภายใน — จึงไม่เคยออกจากอุปกรณ์ของคุณ ทำให้ปลอดภัยที่จะแปลง manifest สำหรับการดีพลอยจริง ไม่ใช่แค่ตัวอย่างที่ตัดข้อมูลอ่อนไหวออกแล้ว

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

JSON กับ YAML ต่างกันอย่างไร
JSON เป็นรูปแบบข้อมูลที่เข้มงวด ใช้วงเล็บปีกกาและวงเล็บเหลี่ยม เหมาะสำหรับ API และการแลกเปลี่ยนข้อมูลระหว่างเครื่อง ส่วน YAML เป็นซูเปอร์เซ็ตของ JSON ที่อ่านง่ายสำหรับมนุษย์ โดยใช้การเยื้องแทนวงเล็บปีกกาและรองรับคอมเมนต์ จึงเป็นที่นิยมสำหรับไฟล์คอนฟิก เช่น Docker Compose, GitHub Actions และ Kubernetes manifest
จะแปลง JSON เป็น YAML ได้อย่างไร
วาง JSON ของคุณลงในช่องอินพุต แล้วเครื่องมือจะแยกวิเคราะห์และแปลงกลับให้เป็น YAML โดยคงโครงสร้าง การซ้อนชั้น อาร์เรย์ และชนิดข้อมูลอย่างตัวเลข บูลีน และ null ไว้ครบถ้วน เลือกความกว้างของการเยื้องให้ตรงกับแนวทางของโปรเจกต์คุณ
แปลง YAML กลับเป็น JSON ได้ไหม
ได้ เพียงสลับทิศทางเป็น YAML เป็น JSON เครื่องมือจะแยกวิเคราะห์ YAML ของคุณและแสดงผลเป็น JSON ที่ถูกต้องและจัดรูปแบบสวยงาม โปรดทราบว่าคอมเมนต์ใน YAML จะไม่ถูกนำมาด้วย เพราะ JSON ไม่มีไวยากรณ์สำหรับคอมเมนต์
การแยกวิเคราะห์ YAML ที่ไม่น่าเชื่อถือที่นี่ปลอดภัยหรือไม่
ปลอดภัย ตัวแปลงนี้ใช้ YAML schema แบบปลอดภัย ซึ่งโหลดเฉพาะชนิดข้อมูลมาตรฐานเท่านั้น — แมป ซีเควนซ์ สตริง ตัวเลข บูลีน และ null — และจะไม่เรียกใช้โค้ดหรือสร้างชนิดข้อมูลที่กำหนดเองขึ้นมา การวาง YAML ที่ไม่น่าเชื่อถือจึงไม่สามารถรันสิ่งใดในเบราว์เซอร์ของคุณได้
ข้อมูลของฉันถูกอัปโหลดไปยังเซิร์ฟเวอร์หรือไม่
ไม่ การแยกวิเคราะห์และการแปลงทั้งหมดเกิดขึ้นภายในเบราว์เซอร์ของคุณทั้งหมด ข้อมูลของคุณจะไม่ถูกอัปโหลด บันทึก หรือจัดเก็บไว้ จึงเป็นส่วนตัวอย่างสมบูรณ์ และเครื่องมือยังทำงานได้แม้คุณจะออฟไลน์อยู่

เครื่องมือที่เกี่ยวข้อง

ทำงานต่อด้วยเครื่องมือที่มีประโยชน์เหล่านี้

ตัวแปลง JSON เป็น CSV

ตัวแปลง Unix Timestamp

ตัวแปลงเลขฐานสอง ↔ เลขฐานสิบ

เครื่องแปลงเลขฐานสิบ ↔ เลขฐานสอง

ตัวแปลง CSV เป็น JSON

ตัวแปลงข้อความเป็นไบนารี