การแปลง CSV เป็น JSON คืออะไร?
CSV (Comma-Separated Values, RFC 4180) เป็นรูปแบบข้อความแบบตารางที่แบนราบ; JSON (JavaScript Object Notation, RFC 8259) เป็นรูปแบบข้อความรูปทรงต้นไม้สำหรับข้อมูลแบบมีโครงสร้าง การแปลง CSV เป็น JSON เปลี่ยนตารางที่เป็นมิตรกับสเปรดชีตให้กลายเป็นอาร์เรย์ออบเจ็กต์ที่เป็นมิตรกับ API — หนึ่งออบเจ็กต์ต่อหนึ่งแถว โดยแถวหัวทำหน้าที่จัดเตรียมคีย์ — โดยไม่ต้องพิมพ์เซลล์ใหม่แม้แต่เซลล์เดียว
การแปลง CSV เป็น JSON ทำงานอย่างไร?
ทุกการแปลงทำงานภายในเบราว์เซอร์ของคุณ ขั้นตอนหลักคือ:
- คุณวาง CSV ลงในช่องป้อนข้อมูลและกดแปลง; เครื่องมือจะแยกวิเคราะห์ข้อความและแสดงอาร์เรย์ JSON ของออบเจ็กต์ในช่องผลลัพธ์
- สเตตแมชชีนทีละอักขระ (FIELD_START → IN_UNQUOTED_FIELD หรือ IN_QUOTED_FIELD) เดินผ่านอินพุต เคารพการเอสเคปเครื่องหมายคำพูดแบบ
""รู้จักทั้งตัวสิ้นสุดแถว\r\nและ\nและผลิตอาร์เรย์ของสตริงแบบ 2 มิติเป็นการแทนค่ากลาง - ถ้าแถวแรกถูกทำเครื่องหมายเป็นหัว เซลล์ของมันจะกลายเป็นคีย์ออบเจ็กต์ ถ้าไม่ เครื่องมือจะสร้างคีย์สังเคราะห์
field0,field1, … เพื่อให้ทุกแถวยังคงแมปไปยังออบเจ็กต์ที่สมบูรณ์ - ตัวคั่น (คอมมา เซมิโคลอน แท็บ ไปป์ หรือตรวจจับอัตโนมัติ) และการบีบบังคับประเภท (ตัวเลข / บูลีน /
null) ทั้งหมดปรับได้ เมื่อเปิดบีบบังคับ30กลายเป็นตัวเลข 30 และtrueกลายเป็นบูลีน เมื่อปิด ทุกเซลล์จะอยู่เป็นสตริง - ผลลัพธ์ถูกเขียนไปยัง textarea แบบอ่านอย่างเดียวในรูปแบบข้อความ
JSON.stringifyและลิงก์ดาวน์โหลดสร้างBlobด้วย MIME typeapplication/json;charset=utf-8เพื่อให้คุณบันทึกผลลัพธ์ได้ด้วยคลิกเดียว
ทำไมต้องแปลง CSV เป็น JSON ด้วยเครื่องมือนี้?
- ความเป็นส่วนตัว: ทุกการแยกวิเคราะห์และการแปลงเกิดขึ้นในเบราว์เซอร์ของคุณ ข้อมูลไม่เคยเข้าถึงเซิร์ฟเวอร์ของเรา
- ความถูกต้อง: ตัวแยกวิเคราะห์ CSV เป็นสเตตแมชชีนจริง ๆ ฟิลด์ที่มีคอมมาในเครื่องหมายคำพูด (
"Bob, Jr.") บรรทัดใหม่ที่ฝังอยู่ และเครื่องหมายคำพูดที่ถูกเอสเคป แยกวิเคราะห์เป็นเซลล์เดียว ไม่ใช่สาม — การใช้split(',')แบบไร้เดียงสาผิดที่ตรงนี้ - ความถูกต้องของประเภท: การบีบบังคับประเภทแบบเลือกได้จะแปลงเซลล์ตัวเลขและบูลีนเป็นตัวเลขและบูลีน JSON จริง ๆ ทำให้อาร์เรย์ที่ได้พร้อมใช้งานโดยตรงโดยไม่ต้องผ่านการล้างข้อมูลรอบที่สอง
- ความยืดหยุ่น: เลือกตัวคั่นใดก็ได้สำหรับสำเนียง CSV ที่ไม่ใช่คอมมา เลือกว่าแถวแรกเป็นหัวหรือไม่ และเปิด/ปิดการบีบบังคับประเภทสำหรับกรณีที่ทุกเซลล์ต้องเป็นสตริง
การใช้งานทั่วไปของการแปลง CSV เป็น JSON มีอะไรบ้าง?
การแยกวิเคราะห์ CSV เป็น JSON ปรากฏในหลายด้านของงานข้อมูลและเครื่องมือ:
- การจำลอง API: วาง fixture CSV ที่ส่งออกจากสเปรดชีตและแปลงเป็นอาร์เรย์ JSON ที่เซิร์ฟเวอร์ภายในของคุณสามารถส่งคืนเป็น endpoint จำลอง
- การนำเข้าข้อมูล: เปลี่ยนการส่งออกสเปรดชีต (ผู้ติดต่อ สินค้าคงคลัง ผลการสำรวจ) เป็นอาร์เรย์ JSON ที่แอปพลิเคชันหรือสคริปต์สามารถวนซ้ำได้โดยไม่ต้องพึ่ง CSV parser
- การแก้ไขการกำหนดค่า: ให้ผู้ตรวจที่ไม่ใช่ฝ่ายเทคนิคแก้ไขการตั้งค่าหรือ feature flag ทีละเซลล์ในสเปรดชีต แล้วแปลง CSV ที่บันทึกไว้เป็น JSON ที่แอปโหลดจริง
ตัวอย่างการแปลง CSV เป็น JSON เป็นอย่างไร?
การวาง name,age ในบรรทัดแรก Alice,30 ในบรรทัดที่สอง และ "Bob, Jr.",25 ในบรรทัดที่สาม แล้วกดแปลงด้วยตัวคั่นคอมมา แถวแรกเป็นคีย์ และเปิดบีบบังคับประเภท จะได้ [{"name":"Alice","age":30},{"name":"Bob, Jr.","age":25}] — คอมมาที่อยู่ในเครื่องหมายคำพูดใน "Bob, Jr." ยังอยู่ในฟิลด์เดียว และอายุกลายเป็นตัวเลข JSON จริง ๆ
ตัวแปลง CSV เป็น JSON นี้ทำงานในเบราว์เซอร์ของฉันทั้งหมดหรือเปล่า?
ใช่ การแยกวิเคราะห์และการแปลงทุกครั้งทำงานในเครื่องเป็น JavaScript ภายในแท็บเบราว์เซอร์ของคุณ เครื่องมือไม่ได้เรียก fetch, XMLHttpRequest หรือ navigator.sendBeacon เลย — payload CSV ของคุณไม่เคยไปถึงเซิร์ฟเวอร์ของเรา ตัวแปลงของบุคคลที่สาม หรือไปป์ไลน์การวิเคราะห์ใด ๆ เครื่องมือยังทำงานออฟไลน์เมื่อหน้าโหลดแล้ว เพราะเป็นบันเดิล HTML/CSS/JS แบบสแตติกที่ไม่มี API runtime dependency
ขนาดอินพุตสูงสุดที่ตัวแปลงนี้รองรับคือเท่าไร?
ตัวแปลงบัฟเฟอร์อินพุตทั้งหมดในหน่วยความจำและทำงานแบบซิงโครนัสบนเธรดหลัก ดังนั้นข้อจำกัดเชิงปฏิบัติขึ้นอยู่กับอุปกรณ์ของคุณ อินพุตขนาดประมาณ 10 MB ของ CSV (ราว 100,000 แถวทั่วไป) แปลงได้โดยไม่หยุดชะงักบนแล็ปท็อปสมัยใหม่ เกินกว่านั้น UI อาจค้างขณะตัวแยกวิเคราะห์ทำงาน การแปลงแบบสตรีมโดยใช้ Web Worker ร่วมกับตัวแยกวิเคราะห์แบบ chunk เป็นการต่อยอดที่วางแผนไว้ — ตอนนี้ ให้แบ่งชุดข้อมูลใหญ่มากก่อนวาง
ตัวแยกวิเคราะห์ CSV เป็น JSON จัดการคอมมาในเครื่องหมายคำพูดและบรรทัดใหม่ที่ฝังอย่างไร?
ตัวแยกวิเคราะห์เป็นสเตตแมชชีนทีละอักขระที่มีสามสถานะ (FIELD_START, IN_UNQUOTED_FIELD, IN_QUOTED_FIELD) — ไม่ใช่ split(',') แบบไร้เดียงสา ฟิลด์ที่ห่อด้วยเครื่องหมายคำพูดคู่สามารถมีตัวคั่น CR, LF หรือเครื่องหมายคำพูดคู่ตามตัวอักษรที่เอสเคปเป็น "" ได้ ทั้งหมดโดยไม่ทำลายขอบเขตของฟิลด์ ดังนั้น "Bob, Jr.",25 แยกวิเคราะห์เป็นสองฟิลด์ ไม่ใช่สาม และคำอธิบายหลายบรรทัดที่อยู่ในเครื่องหมายคำพูดข้ามแถวจะแยกวิเคราะห์เป็นเซลล์เดียว
ตัวเลข บูลีน และเซลล์ว่างถูกกำหนดประเภทอย่างไรในผลลัพธ์ JSON?
การกำหนดประเภทควบคุมโดยสวิตช์ การบีบบังคับประเภท เมื่อเปิด (ค่าเริ่มต้น) เซลล์ที่ดูเหมือนตัวเลขจะกลายเป็นตัวเลข JSON true/false กลายเป็นบูลีน และ null ตามตัวอักษรกลายเป็น JSON null ที่เหลือยังคงเป็นสตริง เมื่อปิด ทุกค่าจะถูกเก็บเป็นสตริงโดยไม่คำนึงถึงเนื้อหา — มีประโยชน์เมื่อเลขนำหน้าศูนย์ หมายเลขโทรศัพท์ หรือรหัสระบุตัวตนต้องคงอยู่ครบถ้วน เซลล์ท้ายที่ขาดหายในแถวสั้นจะถูกส่งออกเป็นสตริงว่างเพื่อให้ทุกออบเจ็กต์มีชุดคีย์ครบถ้วน
ฝั่ง CSV รองรับตัวคั่นใดบ้าง?
รองรับตัวคั่นชัดเจนสี่ตัว: คอมมา (, ค่าเริ่มต้นของ RFC 4180), เซมิโคลอน (; ที่พบบ่อยใน locale ยุโรป), แท็บ (\t สำเนียง TSV) และไปป์ (|) คุณยังเลือก ตรวจจับอัตโนมัติ ได้ ซึ่งจะนับการเกิดของแต่ละตัวเลือกใน 4 KB แรกของอินพุตนอกเขตที่อยู่ในเครื่องหมายคำพูด และเลือกตัวที่บ่อยที่สุดที่ให้จำนวนคอลัมน์คงที่ใน 5 แถวแรก
ตัวแปลง CSV เป็น JSON นี้แยกวิเคราะห์ด้วยสเตตแมชชีนจริง ๆ และปล่อยผลลัพธ์ JSON ที่สะอาด พร้อมใช้งาน ซึ่งคุณสามารถวางลงในการเรียก API สคริปต์ หรือการตรวจสอบโค้ดได้โดยตรง — โดยไม่อัปโหลดแม้แต่ไบต์เดียว