การแปลง JSON เป็น CSV คืออะไร?
JSON (JavaScript Object Notation, RFC 8259) เป็นรูปแบบข้อความรูปทรงต้นไม้สำหรับข้อมูลแบบมีโครงสร้าง; CSV (Comma-Separated Values, RFC 4180) เป็นรูปแบบข้อความแบบตารางที่แบนราบ การแปลง JSON เป็น CSV จะแผ่ต้นไม้นั้นออกเป็นแถวและคอลัมน์ ทำให้ชุดข้อมูลที่เริ่มต้นจากการตอบสนอง API เปิดได้ในสเปรดชีตโดยไม่ต้องพิมพ์แถวใหม่
การแปลง JSON เป็น CSV ทำงานอย่างไร?
ทุกการแปลงทำงานภายในเบราว์เซอร์ของคุณ ขั้นตอนหลักคือ:
JSON.parseตรวจสอบความถูกต้องของอินพุตและยืนยันว่าเป็นอาร์เรย์ของเรกคอร์ดที่ระดับสูงสุด ข้อผิดพลาดที่ชัดเจนจะแสดงหากวงเล็บ คอมมา หรือคีย์ในเครื่องหมายคำพูดไม่ถูกต้อง- ตัวเขียนสืบค้นคอลัมน์หัวจากเรกคอร์ดของคุณ — เป็นการรวมของทุกคีย์ที่พบ หรือเฉพาะคีย์จากเรกคอร์ดแรก ขึ้นอยู่กับ toggle
- ออบเจ็กต์ซ้อนจะถูกแผ่เป็นคีย์จุด (
user.id,user.city) หรือซีเรียลไลซ์เป็นเซลล์ JSON เดียว ตามที่คุณเลือก อาร์เรย์ภายในออบเจ็กต์จะถูก JSON-สตริงไฟในทั้งสองโหมด - แต่ละเซลล์จะถูกเอสเคปตาม RFC 4180: ค่าใดที่มีตัวคั่น เครื่องหมายคำพูดคู่ หรือการขึ้นบรรทัดใหม่จะถูกห่อในเครื่องหมายคำพูด และเครื่องหมายคำพูดภายในจะถูกเพิ่มเป็นสองตัว แถวต่อกันด้วยตัวสิ้นสุดบรรทัด
\r\n - CSV จะปรากฏในกล่องผลลัพธ์แบบอ่านอย่างเดียว และลิงก์ดาวน์โหลดจะสร้าง
Blobด้วยประเภท MIMEtext/csv;charset=utf-8เพื่อให้คุณบันทึกไฟล์ได้ด้วยคลิกเดียว
ทำไมต้องแปลง JSON เป็น CSV ด้วยเครื่องมือนี้?
- ความเป็นส่วนตัว: การแยกวิเคราะห์ การแผ่ และการเขียนทุกครั้งเกิดขึ้นในเบราว์เซอร์ของคุณ ข้อมูลไม่เคยเข้าถึงเซิร์ฟเวอร์ของเรา
- ความถูกต้อง: ตัวเขียนปฏิบัติตาม RFC 4180 ค่าอย่าง
Bob, Jr.จะออกมาเป็น"Bob, Jr."— เซลล์เดียวที่มีเครื่องหมายคำพูด ไม่ใช่สองคอลัมน์ — และการขึ้นบรรทัดใหม่หรือเครื่องหมายคำพูดที่ฝังอยู่จะยังคงอยู่หลังการแปลง - พร้อมสำหรับสเปรดชีต: ผลลัพธ์วางได้ตรงใน Excel หรือ Google Sheets พร้อมคอลัมน์หัวที่สืบค้นจากคีย์ของคุณแล้ว จึงไม่ต้องทำความสะอาดข้อมูลด้วยมือก่อนใช้งาน
- ความยืดหยุ่น: แผ่ออบเจ็กต์ซ้อนเป็นคีย์จุดหรือซีเรียลไลซ์เป็นเซลล์เดียว เลือกตัวคั่นใดก็ได้สำหรับสำเนียง CSV ที่ไม่ใช่คอมมา และเลือกว่าหัวมาจากทุกคีย์หรือเฉพาะเรกคอร์ดแรก
การใช้งานทั่วไปของการแปลง JSON เป็น CSV มีอะไรบ้าง?
การแผ่ JSON เป็น CSV ปรากฏในหลายด้านของงานข้อมูลและเครื่องมือ:
- การส่งออกข้อมูล: เปลี่ยนการตอบกลับ API ให้เป็นไฟล์ CSV ที่ทีมการเงิน ปฏิบัติการ หรือผลิตภัณฑ์ของคุณเปิดใน Excel หรือ Google Sheets ได้โดยไม่ต้องเขียนโค้ด
- การรายงาน: วางผลลัพธ์การสอบถาม JSON ลงในสเปรดชีตสำหรับตาราง pivot แผนภูมิ หรือคอลัมน์สูตรด่วน งานประเภทนี้ยากมากเมื่อทำกับ JSON ดิบโดยตรง
- การตรวจสอบสเปรดชีต: แผ่การตั้งค่า JSON ซ้อน (การตั้งค่า, feature flag, A/B variant) เป็น CSV เพื่อให้ผู้ตรวจที่ไม่ใช่ฝ่ายเทคนิคอ่านและแก้ไขทีละเซลล์ได้
ตัวอย่างการแปลง JSON เป็น CSV เป็นอย่างไร?
วาง [{"name":"Alice","age":30},{"name":"Bob, Jr.","age":25}] ปล่อยตัวคั่นไว้ที่คอมมา แล้วกด CONVERT คุณจะได้สามบรรทัด: แถวหัว name,age, แถวข้อมูล Alice,30 และแถว "Bob, Jr.",25 คอมมาที่ฝังอยู่นั่นแหละที่ทำให้การ join แบบไร้เดียงสาล้มเหลว — ที่นี่มันกระตุ้น RFC 4180 ให้ใส่เครื่องหมายคำพูด ทำให้เซลล์อยู่ครบถ้วน
ตัวแปลง JSON เป็น CSV นี้ทำงานในเบราว์เซอร์ของฉันทั้งหมดหรือไม่?
ใช่ การแยกวิเคราะห์ การแผ่ และการเขียนทุกครั้งทำงานในเครื่องเป็น JavaScript ภายในแท็บเบราว์เซอร์ของคุณ เครื่องมือไม่ได้เรียก fetch, XMLHttpRequest หรือ navigator.sendBeacon เลย — payload JSON ของคุณไม่เคยไปถึงเซิร์ฟเวอร์ของเรา ตัวแปลงของบุคคลที่สาม หรือไปป์ไลน์การวิเคราะห์ใดๆ เครื่องมือยังทำงานออฟไลน์เมื่อหน้าโหลดแล้ว เพราะเป็นบันเดิล HTML/CSS/JS แบบสแตติกที่ไม่มี API runtime dependency
ขนาดอินพุตสูงสุดที่ตัวแปลงนี้รองรับคือเท่าไร?
ตัวแปลงบัฟเฟอร์อินพุตทั้งหมดในหน่วยความจำและทำงานแบบซิงโครนัสบนเธรดหลัก ดังนั้นข้อจำกัดเชิงปฏิบัติขึ้นอยู่กับอุปกรณ์ของคุณ อาร์เรย์ JSON ขนาดประมาณ 10 MB (ราว 100,000 เรกคอร์ดทั่วไป) แผ่เป็น CSV ได้โดยไม่หยุดชะงักบนแล็ปท็อปสมัยใหม่ เกินกว่านั้น UI อาจค้างขณะตัวเขียนทำงาน การแปลงแบบสตรีมโดยใช้ Web Worker ร่วมกับตัวเขียนแบบ chunk เป็นการต่อยอดที่วางแผนไว้ — ตอนนี้ ให้แบ่งชุดข้อมูลใหญ่มากก่อนวาง
ตัวเขียนจัดการค่าที่มีคอมมา เครื่องหมายคำพูด หรือการขึ้นบรรทัดใหม่อย่างไร?
ตามข้อกำหนด RFC 4180 ค่าใดที่มีตัวคั่นที่ใช้งานอยู่ เครื่องหมายคำพูดคู่ CR หรือ LF จะถูกห่อด้วยเครื่องหมายคำพูดคู่ และเครื่องหมายคำพูดภายในจะถูกเพิ่มเป็นสองตัว ดังนั้นชื่ออย่าง Bob, Jr. จะกลายเป็นเซลล์เดียว "Bob, Jr." แทนที่จะล้นออกเป็นสองคอลัมน์ และคำอธิบายหลายบรรทัดก็อยู่ในเซลล์เดียว นี่คือส่วนที่ join(',') แบบไร้เดียงสาทำผิดพลาด
เกิดอะไรขึ้นกับออบเจ็กต์ JSON ที่ซ้อนกันเมื่อแปลงเป็น CSV?
ออบเจ็กต์ซ้อนถูกจัดการตามสวิตช์ ออบเจ็กต์ซ้อน ในโหมด แผ่ออก (ค่าเริ่มต้น) คีย์จะถูกต่อด้วยจุด — {"user":{"id":1,"city":"Paris"}} กลายเป็นคอลัมน์ user.id และ user.city ในโหมด สตริงไฟ ออบเจ็กต์ซ้อนถูกซีเรียลไลซ์เป็นค่าเซลล์ JSON เดี่ยวโดยคงการเอสเคปเครื่องหมายคำพูดของ RFC 4180 ไว้ ทำให้รักษาโครงสร้างไว้สำหรับการไปกลับ อาร์เรย์ภายในออบเจ็กต์ถูก JSON-สตริงไฟในทั้งสองโหมด
ผลลัพธ์ CSV สามารถใช้ตัวคั่นใดได้บ้าง?
สี่ตัว: คอมมา (, ค่าเริ่มต้นของ RFC 4180), เซมิโคลอน (; ที่พบบ่อยใน locale ยุโรป), แท็บ (\t สำเนียง TSV) และไปป์ (|) เลือกตัวที่เครื่องมือปลายทางของคุณคาดหวัง ตัวเขียนจะเอสเคปเซลล์ใดก็ตามที่มีตัวคั่นที่เลือก ดังนั้นการเลือกจะไม่ทำให้ค่าเสียหาย
ตัวแปลง JSON เป็น CSV นี้จะแผ่อาร์เรย์ของคุณและส่งออกผลลัพธ์ที่สอดคล้องกับ RFC 4180 ซึ่งคุณสามารถวางลงในสเปรดชีต รายงาน หรือการตรวจสอบโค้ดได้โดยตรง — โดยไม่อัปโหลดแม้แต่ไบต์เดียว ต้องการทิศทางตรงกันข้ามหรือไม่? ตัวแปลง CSV เป็น JSON จะแยกวิเคราะห์อีกทิศทาง