CSV, JSON และ YAML
สามรูปแบบนี้พกข้อมูลที่มีโครงสร้างส่วนใหญ่ของโลก การแปลงระหว่างกันทำได้ง่าย แต่การแปลงโดยไม่ทำให้บางอย่างเสียหายแบบเงียบ ๆ ต้องระมัดระวังเล็กน้อย
เผยแพร่:
แต่ละแบบใช้ทำอะไร
CSV คือตาราง มีแถวและคอลัมน์เท่านั้น อ่านได้ทุกที่ ขนาดเล็กมาก และแสดงข้อมูลซ้อนไม่ได้ JSON คือต้นไม้ คือออบเจ็กต์ในอาร์เรย์ในออบเจ็กต์ และเป็นสิ่งที่เว็บ API เกือบทุกตัวใช้ YAML แสดงโครงสร้างเดียวกับ JSON แต่ใช้การเยื้องแทนวงเล็บปีกกา ทำให้มนุษย์อ่านและแก้ไขสบายกว่ามาก และเป็นเหตุผลที่ไฟล์คอนฟิกเอนมาทางนี้
กับดักการแปลงชนิดข้อมูล
นี่คือสิ่งที่ทำให้คนเสียเงินจริง ๆ CSV มีแต่ข้อความ ไม่มีวิธีระบุว่าค่าเป็นตัวเลข วันที่ หรือสตริง ตัวแปลงจึงเดา และการเดามักผิด
- รหัสไปรษณีย์อย่าง
01234กลายเป็นตัวเลข1234และเลขศูนย์นำหน้าหายไป - รหัสสินค้าอย่าง
1-2กลายเป็นวันที่ - เลขบัญชียาว ๆ กลายเป็นเลขทศนิยมลอยตัวและเสียหลักสุดท้าย
NAที่หมายถึงอเมริกาเหนือ กลายเป็น "ไม่มีข้อมูล"
ทุกกรณีเหล่านี้เกิดขึ้นเงียบ ๆ จึงเป็นเหตุผลที่การแปลง CSV เป็น JSON อย่างระมัดระวังควรปล่อยทุกค่าเป็นสตริงแล้วให้คุณตัดสินใจ ซึ่งตัวแปลงของเว็บไซต์นี้ทำโดยตั้งใจ แม้ตอนแรกจะดูจุกจิก
สิ่งที่ไม่รอดเมื่อแปลงเป็น CSV
ข้อมูลซ้อน อาร์เรย์ JSON ของออบเจ็กต์แบบแบนกลายเป็นตารางที่สะอาด แต่ทันทีที่ค่าเป็นออบเจ็กต์หรืออาร์เรย์เอง ก็ไม่มีคอลัมน์ให้ใส่ ตัวเลือกคือทำให้แบนด้วยคีย์ประกอบ แปลงส่วนที่ซ้อนกลับเป็นข้อความภายในเซลล์ หรือทิ้งไป และการทิ้งแบบเงียบ ๆ แย่ที่สุดในสามอย่าง การเขียนกลับเป็นข้อความ JSON ในเซลล์อย่างน้อยก็ทำให้กู้ข้อมูลได้
ด้านที่แหลมคมของ YAML
YAML อ่านสบายและพลาดง่ายผิดปกติ
- การเยื้องคือโครงสร้าง และไม่อนุญาตให้ใช้แท็บ ช่องว่างที่วางผิดที่เปลี่ยนความหมายแทนที่จะเกิดข้อผิดพลาด
- คำเปล่าบางคำเป็นบูลีน ใน YAML รุ่นเก่า
y,n,on,off,yesและnoถูกวิเคราะห์เป็นจริงหรือเท็จทั้งหมด คอลัมน์ประเทศที่มีNOสำหรับนอร์เวย์จึงกลายเป็นfalseให้ใส่เครื่องหมายคำพูด - คอมเมนต์หายไป เมื่อแปลงเป็น JSON เพราะ JSON ไม่มีวิธีแสดงคอมเมนต์
ไม่รับประกันการไปกลับ
การแปลง JSON เป็น YAML แล้วกลับมักได้สิ่งที่เริ่มต้น ส่วนการแปลง CSV เป็น JSON แล้วกลับมักไม่ได้ รูปแบบการใส่เครื่องหมายคำพูด ลำดับคอลัมน์สำหรับระเบียนที่มีรูปร่างต่างกัน และการแสดงค่าว่างเป็นเรื่องของการเลือก และแต่ละเครื่องมือเลือกต่างกัน หากการไปกลับต้องตรงทุกประการ ให้ตรวจสอบแทนการสมมติ
หากต้องการแปลงระหว่างกัน: แปลง CSV เป็น JSON แปลง JSON เป็น CSV หรือแปลง JSON เป็น YAML และตรวจผลลัพธ์ เพราะการไปกลับไม่ตรงทุกประการเสมอไป