CSV และ JSON: สองวิธีในการส่งข้อมูลเดียวกัน
ข้อมูลตารางส่วนใหญ่มักอยู่ในหนึ่งในสองฟอร์แมต CSV คือภาษาพื้นเมืองของสเปรดชีต ไฟล์ข้อความธรรมดาที่แต่ละบรรทัดเป็นแถวและจุลภาคคั่นคอลัมน์ JSON คือภาษาของ API และแอป ฟอร์แมตข้อความที่มีโครงสร้างสร้างจาก Object (คู่ Key และ Value) และ Array (รายการที่เรียงลำดับ) ทั้งคู่อธิบายข้อมูลเดียวกันในรูปแบบต่างกันมาก นั่นคือสาเหตุที่การแปลงระหว่างกันเกิดขึ้นบ่อย หน้านี้ทำการแปลงทั้งสองทิศทางทั้งหมดภายในเบราว์เซอร์ของคุณ
CSV โดดเด่นที่ไหนก็ตามที่กริดรู้สึกเป็นธรรมชาติ ส่งออกรายงานจากฐานข้อมูล ดาวน์โหลดรายการออเดอร์ หรือบันทึก Sheet จาก Excel หรือ Google Sheets แล้วคุณมักได้ CSV เสมอ มันกะทัดรัด อ่านง่าย และทุกเครื่องมือวิเคราะห์บนโลกสามารถเปิดได้ JSON โดดเด่นที่ซอฟต์แวร์คุยกับซอฟต์แวร์ REST API ส่งและรับมัน ไฟล์การกำหนดค่าใช้มัน และ JavaScript อ่านได้โดยไม่ต้องใช้ Library การ Parse ใดๆ เมื่อต้องป้อนข้อมูลที่ส่งออกจากสเปรดชีตเข้า API หรือดึง API Response เข้าสเปรดชีต คุณกำลังแปลระหว่างสองโลกนี้จริงๆ

วิธีที่แถวและส่วนหัวกลายเป็น Object
การ Mapping ง่ายกว่าที่ดู บรรทัดแรกของไฟล์ CSV มักเป็นแถวส่วนหัว และชื่อส่วนหัวเหล่านั้นกลายเป็น Key ใน JSON ทุกแถวถัดมากลายเป็น Object หนึ่งชิ้น ที่แต่ละเซลล์จับคู่กับส่วนหัวที่ตรงกัน ไฟล์ทั้งหมดกลายเป็น Array ของ Object เหล่านั้น ดังนั้น CSV ที่มีคอลัมน์ name,email,age จะกลายเป็นรายการเช่น [{"name": "Ada", "email": "ada@example.com", "age": "36"}, ...] การไปอีกทาง JSON เป็น CSV จะอ่าน Key ของ Object แรกเพื่อสร้างบรรทัดส่วนหัว แล้วเขียนหนึ่งแถวต่อ Object มันเป็นการเดินทางกลับที่สะอาดและคาดเดาได้ตราบเท่าที่ข้อมูลของคุณเป็นตารางจริงๆ
สิ่งที่ควรรู้
CSV ดูเรียบง่ายแต่มีขอบคมซ่อนอยู่ ปัญหาที่ใหญ่ที่สุดคือจุลภาคในช่อง ถ้าที่อยู่มี "เบอร์ลิน, เยอรมนี" การแยกแบบไม่รอบคอบด้วยจุลภาคจะฉีก Value เดียวนั้นออกเป็นสองคอลัมน์ มาตรฐาน CSV จัดการสิ่งนี้โดยการห่อช่องดังกล่าวด้วยเครื่องหมายคำพูดคู่ และเครื่องหมายคำพูดในช่องที่มีเครื่องหมายคำพูดจะถูกซ้ำ ("") โปรแกรมแปลงที่ดีเคารพกฎเหล่านั้นเพื่อไม่ให้ข้อมูลเลื่อนคอลัมน์โดยไม่รู้ตัว ระวัง Delimiter ด้วย การส่งออกของยุโรปหลายแห่งใช้เซมิโคลอนแทนจุลภาค เพราะจุลภาคเป็นตัวคั่นทศนิยมอยู่แล้วที่นั่น Tab และ Pipe ก็ปรากฏเช่นกัน
ความแตกต่างที่ลึกกว่าคือชนิดข้อมูล CSV ไม่มีแนวคิดเรื่องชนิดข้อมูลเลย ทุกอย่างเป็นข้อความ ดังนั้นตัวเลข 42 ค่า Boolean true และเซลล์ว่างล้วนดูเหมือน String ธรรมดา ในทางตรงกันข้าม JSON แยกแยะตัวเลข String Boolean null และโครงสร้างแบบซ้อน เมื่อแปลง CSV เป็น JSON ค่าจะมาเป็น String เว้นแต่เครื่องมือจะถูกสั่งให้แปลตัวเลขและ Boolean การแปลง JSON เป็น CSV มีปัญหาตรงข้าม Object แบบซ้อนและ Array ไม่พอดีกับกริดแบบแบน จึงมักถูก Flatten หรือแปลงเป็น String ในเซลล์เดียว การรู้สิ่งนี้ล่วงหน้าช่วยให้คุณไม่ต้องประหลาดใจว่าทำไมคอลัมน์ "ดูผิด" ในภายหลัง

การเดินทางกลับจริงๆ
นี่คือสถานการณ์ที่เกิดขึ้นต่อเนื่อง เพื่อนร่วมงานส่งสเปรดชีตของผู้ใช้ใหม่และขอให้คุณโหลดผ่าน API ภายใน API รับเฉพาะ JSON คุณส่งออก Sheet เป็น CSV วางที่นี่ และได้ Array ของ Object สะอาดที่พร้อมวาง Request Payload ของคุณ ภายหลัง API ส่งคืนรายการ JSON ของ Record ที่สร้างขึ้น และคุณต้องส่งกลับให้เพื่อนร่วมงานเดิมเพื่อตรวจสอบ คุณวาง JSON แปลงเป็น CSV และมันเปิดตรงในสเปรดชีตของพวกเขา ไม่ต้องใช้ Script ไม่ต้องติดตั้ง แค่การแปลสองครั้งที่รวดเร็วในกลางขั้นตอนงานปกติ
เฉพาะในเครื่อง ตามการออกแบบ
ทุกอย่างนี้ทำงานในเบราว์เซอร์ของคุณ CSV และ JSON ของคุณถูก Parse และแปลงโดย JavaScript บนเครื่องของคุณเอง และไม่มีการอัปโหลดไปยังเซิร์ฟเวอร์ นั่นสำคัญเพราะการส่งออกมักมีชื่อจริง อีเมล รายละเอียดออเดอร์ หรือตัวระบุภายในที่คุณไม่ควรวางในบริการระยะไกลแบบสุ่ม ที่นี่ข้อมูลไม่เคยออกจากเพจ หากต้องการจัดระเบียบผลลัพธ์หลังจากนั้น JSON Formatter ของเราจะ Pretty Print และตรวจสอบได้ และคุณสามารถดู ตัวแปลงข้อมูล ที่เหลือของเราสำหรับฟอร์แมตที่เกี่ยวข้อง
คำถามที่พบบ่อย
ข้อมูลของฉันถูกอัปโหลดที่ไหนหรือไม่?
ไม่ การแปลงทำงานทั้งหมดในเบราว์เซอร์โดยใช้ JavaScript ดังนั้น CSV และ JSON ของคุณอยู่บนอุปกรณ์ของคุณเองและไม่เคยถูกส่งไปยังเซิร์ฟเวอร์
โปรแกรมแปลงจัดการจุลภาคในช่องได้หรือไม่?
ใช่ ช่องที่มีจุลภาคควรถูกห่อด้วยเครื่องหมายคำพูดคู่ใน CSV และ Parser เคารพเครื่องหมายคำพูดเหล่านั้นเพื่อให้ค่าอยู่ในคอลัมน์เดียว
ทำไมตัวเลขของฉันถึงแสดงเป็นข้อความใน JSON?
CSV ไม่มีชนิดข้อมูล ดังนั้นทุกเซลล์เป็นข้อความธรรมดา ค่ากลายเป็น JSON String เว้นแต่จะใช้การ Parse ตัวเลขและ Boolean เพราะไฟล์ต้นฉบับไม่มีทางบอกได้ว่าตัวเลขต่างจากคำ
JSON แบบซ้อนกันจะเกิดอะไรขึ้นเมื่อแปลงเป็น CSV?
กริดแบบแบนไม่สามารถเก็บโครงสร้างแบบซ้อนได้ ดังนั้น Object และ Array แบบซ้อนมักถูก Flatten หรือเขียนเป็นค่า String เดียวในเซลล์
ฉันสามารถใช้เซมิโคลอนหรือ Tab แทนจุลภาคได้หรือไม่?
ได้ การส่งออกหลายแห่ง โดยเฉพาะจากยุโรป ใช้เซมิโคลอนหรือ Tab เป็น Delimiter และเครื่องมือสามารถอ่านสิ่งเหล่านั้นแทนจุลภาคมาตรฐาน
มันแปลงได้ทั้งสองทิศทางหรือไม่?
ใช่ คุณสามารถเปลี่ยน CSV เป็น JSON และ JSON กลับเป็น CSV ทำให้การเดินทางกลับระหว่างสเปรดชีตและ API เป็นเรื่องง่าย
