NordVPN
SponsoredStrict no-logs VPN with 6,400+ servers in 111 countries. Threat Protection blocks ads, trackers, and malware while you work online.
Get NordVPN →วาง JSON ด้านซ้ายรับ YAML ด้านขวา หรือกลับกัน ทั้งสองแผงแก้ไขได้แบบเรียลไทม์และซิงค์อัตโนมัติ มีปุ่มจัดรูปแบบ JSON สลับ และคัดลอก การแปลงทำงานในเบราว์เซอร์ทั้งหมดโดยไม่ส่งข้อมูลไปยังเซิร์ฟเวอร์
JSON (JavaScript Object Notation) ถูกแนะนำโดย Douglas Crockford ในช่วงต้นปี 2000 ในฐานะรูปแบบการแลกเปลี่ยนข้อมูลน้ำหนักเบาที่มาจากไวยากรณ์ object literal ของ JavaScript ไวยากรณ์ที่เข้มงวด ได้แก่ เครื่องหมายคำพูดคู่ ไม่มีเครื่องหมายจุลภาคท้าย ไม่มีความคิดเห็น ทำให้ไม่คลุมเครือและแยกวิเคราะห์ได้ง่ายในทุกภาษา JSON แทนที่ XML ในเว็บ API อย่างรวดเร็วเพราะกระชับและเข้ากันได้ดีกับ JavaScript
YAML (YAML Ain't Markup Language) ถูกสร้างในปี 2001 โดย Clark Evans และ Ingy döt Net โดยมีเป้าหมายเพื่อให้เป็นมิตรกับมนุษย์มากขึ้น YAML 1.2 เป็น superset ของ JSON ในทางเทคนิค ซึ่งหมายความว่าเอกสาร JSON ที่ถูกต้องทุกฉบับถือเป็น YAML ที่ถูกต้อง แต่ YAML เพิ่มโครงสร้างแบบ indentation ความคิดเห็น string หลายบรรทัด และการอนุมานประเภท ทำให้เหมาะกับไฟล์การกำหนดค่าที่แก้ไขด้วยมือ
JSON โดดเด่นเมื่อเครื่องจักรอ่านข้อมูล: REST API บันทึกฐานข้อมูล การสื่อสารระหว่างบริการ และ localStorage ความเรียบง่ายหมายความว่าภาษาโปรแกรมมิ่งเกือบทุกภาษามี JSON parser ในตัว และกฎไวยากรณ์ที่เข้มงวดขจัดความคลุมเครือ
YAML โดดเด่นในไฟล์การกำหนดค่าที่แก้ไขโดยมนุษย์: Docker Compose, Kubernetes manifests, GitHub Actions workflows และ Ansible playbooks ใช้ YAML เป็นค่าเริ่มต้น ความคิดเห็นช่วยให้เอกสารแบบ inline และโครงสร้างแบบ indentation ทำให้การกำหนดค่าแบบลำดับชั้นอ่านง่ายขึ้น
ความไวต่อ indentation ของ YAML เป็นแหล่งข้อผิดพลาดที่พบบ่อยที่สุด ต่างจากวงเล็บปีกกาของ JSON ตรงที่ช่องว่างหนึ่งช่องที่วางผิดที่จะเปลี่ยนโครงสร้าง YAML ยังทำการอนุมานประเภทโดยอัตโนมัติด้วย ตัวอย่างเช่น yes ที่ไม่มีเครื่องหมายคำพูดจะกลายเป็น boolean true และ 0755 อาจถูกตีความเป็นเลขฐานแปด
อักขระพิเศษก็เป็นความท้าทายอีกประการหนึ่ง เครื่องหมายโคลอนตามด้วยช่องว่าง (: ) เครื่องหมายแฮช (#) และอักขระพิเศษที่จุดเริ่มต้นของ string ต้องอยู่ในเครื่องหมายคำพูดใน YAML เครื่องมือนี้จัดการกรณีเหล่านี้โดยอัตโนมัติ แต่คุณสมบัติ YAML ขั้นสูงเช่น anchors, aliases และ block scalars หลายบรรทัดไม่รองรับ
ใช่ YAML 1.2 เป็น superset ที่เข้มงวดของ JSON ซึ่งหมายความว่าเอกสาร JSON ที่ถูกต้องทุกฉบับถือเป็น YAML ที่ถูกต้อง ในทางกลับกันไม่เป็นความจริงเสมอไป: คุณสมบัติ YAML เช่น ความคิดเห็น anchors และ block scalars ไม่มีเทียบเท่าใน JSON
YAML พบมากที่สุดในไฟล์การกำหนดค่า: Docker Compose, Kubernetes manifests, GitHub Actions, Ansible playbooks รูปแบบที่อ่านง่ายเหมาะกับไฟล์ที่นักพัฒนาแก้ไขด้วยตนเอง
YAML มักชนะสำหรับการกำหนดค่าที่แก้ไขโดยมนุษย์เพราะรองรับความคิดเห็นและดูไม่รกตา JSON ดีกว่าสำหรับการกำหนดค่าที่สร้างหรือใช้โดยเครื่องจักร เครื่องมือหลายอย่าง (ESLint, Prettier, tsconfig) รองรับทั้งสองรูปแบบ
String ที่มีเครื่องหมายโคลอนตามด้วยช่องว่าง อักขระพิเศษนำหน้า ({, [, #) หรือค่าที่ดูเหมือน boolean หรือตัวเลข ต้องอยู่ในเครื่องหมายคำพูด เครื่องหมายคำพูดเดี่ยวปิดใช้งาน escape ทั้งหมด เครื่องหมายคำพูดคู่ใช้ backslash escape คล้ายกับ JSON เครื่องมือนี้เพิ่มเครื่องหมายคำพูดโดยอัตโนมัติตามต้องการ
สำหรับประเภทที่ JSON รองรับ (string, ตัวเลข, boolean, null, object, array) การแปลงไม่มีการสูญเสียข้อมูล ปัญหาเดียวที่อาจเกิดขึ้นคือการอนุมานประเภทของ YAML บนค่าที่ไม่มีเครื่องหมายคำพูด
ใช้ไลบรารี PyYAML: import yaml, json; data = yaml.safe_load(open('file.yaml')); print(json.dumps(data, indent=2)) ฟังก์ชัน safe_load หลีกเลี่ยงการรัน YAML tags ที่ไม่ปลอดภัย
ใช้แพ็คเกจ js-yaml: const yaml = require('js-yaml'); const obj = JSON.parse(fs.readFileSync('file.json')); console.log(yaml.dump(obj)) สำหรับวิธีที่ไม่มี dependency ให้เขียน YAML serializer ด้วยตนเอง ซึ่งเป็นสิ่งที่เครื่องมือนี้ทำ
เครื่องมือนี้จงใจข้ามคุณสมบัติ YAML ขั้นสูง: anchors (&name), aliases (*name), type tags (!!int), block scalars หลายบรรทัด (| และ >), document separators (---) คุณสมบัติเหล่านี้ครอบคลุมน้อยกว่า 5% ของ YAML จริง สำหรับกรณีเหล่านั้นใช้ไลบรารี YAML ที่สมบูรณ์
Strict no-logs VPN with 6,400+ servers in 111 countries. Threat Protection blocks ads, trackers, and malware while you work online.
Get NordVPN →Managed cloud hosting for WordPress and web apps on DigitalOcean, Vultr, and AWS. Fast setup, no server headaches.
Try Cloudways →Hire freelancers for design, writing, dev, and marketing — or sell your own services. Millions of gigs at every budget.
Browse Fiverr →