ขอบเขตของการแปลง JSON ↔ YAML และ XML
คำกล่าวที่ว่า JSON เป็นซูเปอร์เซตของ YAML รับประกันได้เพียงทิศทางเดียว และ XML ไม่มีมาตรฐานการแมป JSON อย่างเป็นทางการเลย — ทุกอย่างขึ้นอยู่กับข้อตกลง
การแปลงระหว่าง JSON กับ YAML, XML, CSV, TypeScript, Java, Go และ SQL ไม่เคยไร้การสูญเสีย ที่สำคัญคือต้องระบุให้ชัดว่าความสูญเสียเกิดตรงไหน
8 บทความคำกล่าวที่ว่า JSON เป็นซูเปอร์เซตของ YAML รับประกันได้เพียงทิศทางเดียว และ XML ไม่มีมาตรฐานการแมป JSON อย่างเป็นทางการเลย — ทุกอย่างขึ้นอยู่กับข้อตกลง
CSV เป็นสองมิติ ส่วน JSON เป็นรูปต้นไม้ ส่วนที่ยากของการแปลงไม่ใช่โค้ด — แต่คือการตัดสินล่วงหน้าว่า array จะถูกแบนอย่างไรและชนิดข้อมูลจะถูกรักษาไว้อย่างไร
โครงสร้างซ้อน ฟิลด์ไม่สม่ำเสมอ และ array ของ array คือจุดที่การแปลง JSON เป็นสเปรดชีตพัง สี่วิธีเรียงตามเวลาที่ใช้จนได้ผล แต่ละวิธีมีข้อแลกเปลี่ยน
การแปลง JSON เป็น SQL INSERT ซ่อนการแยกตารางซ้อน ปัญหา NULL กับฟิลด์ที่หายไป การ escape และช่องว่างระหว่าง dialect ไว้ คำสั่งที่รันได้จริงและตารางเปรียบเทียบสำหรับแต่ละกับดัก
การสร้าง interface จากตัวอย่าง JSON เป็นเพียงครึ่งเดียวของงาน: ฟิลด์ที่ไม่บังคับ null union วันที่ และจำนวนเต็มขนาดใหญ่ต้องมีมนุษย์ตรวจอีกรอบ และ type ไม่ทำ validation ตอนรันไทม์
คำสั่งที่ถูกคัดลอกมากที่สุดในทุกบทเรียนคือ yq -P input.json > output.yaml แต่บน yq v4 มันยังให้ JSON อยู่ บทความนี้วัด yq v4.44.6, PyYAML 6.0.3 และ js-yaml บนตัวอย่าง 2.39 MB อธิบายว่าทำไมนามสกุลของอินพุตเป็นตัวกำหนดรูปแบบเอาต์พุต และให้สูตรที่ถูกต้องสำหรับการแปลงเป็นชุด เครื่องหมายคำพูด การย่อหน้า และความแม่นยำของจำนวนเต็มใหญ่
การทดลองเก้าครั้งบนตัวแปลงจริง: กลยุทธ์ "คีย์จากเรกคอร์ดแรก" หายฟิลด์เงียบ ๆ, null, การขาดหาย และสตริงว่างกลายเป็นเซลล์ว่างเหมือนกันหมด, จำนวนเต็ม 20 หลักสูญเสียความแม่นยำตั้งแต่ JSON.parse แล้ว, และจุดในคีย์ทำให้เส้นทางต่างกันสองเส้นปะทะกันในคอลัมน์เดียวกัน หัวคอลัมน์ถูกสร้างอย่างไร ค่าใดบิดเบี้ยว และเลือกกลยุทธ์ตามการใช้งานปลายทางอย่างไร
มองอย่างละเอียดว่าเครื่องมือสร้าง JSON-to-Java ส่งออกอะไรกันแท้ — ตัวเลขกลายเป็น Double, ออบเจกต์ซ้อนกันกลายเป็น inner class แบบ static และไม่สร้างแอโนเทชัน Jackson เลยสักตัว ความแม่นยำของเงิน การเปลี่ยนชื่อฟิลด์ type erasure ฟิลด์ที่ไม่รู้จัก และวันที่ คือ 5 เรื่องที่ต้องเติมเอง พร้อมโค้ดคัดลอกได้ทันทีสำหรับแต่ละเรื่อง