§

วาง CSV ที่คุณต้องการแปลงเป็น JSON

ตัวคั่น
แถวแรกเป็นหัว
การบีบบังคับประเภท
§

Output

json

การแปลง CSV เป็น JSON เป็นงานประจำของทีมข้อมูลในประเทศไทย — พอร์ทัล data.go.th และสำนักงานสถิติแห่งชาติ NSO เผยแพร่ข้อมูลสำมะโน สำรวจภาวะการทำงาน และ CPI เป็นไฟล์ CSV ก้อนใหญ่ ที่ทีมวิเคราะห์ที่ SCB DataX, KBTG และ Krungsri Finnovate มักแปลงเป็น JSON ก่อนใส่ลง BigQuery หรือ Snowflake ธนาคารแห่งประเทศไทย ธปท. เผยแพร่ข้อมูลอัตราดอกเบี้ย อัตราแลกเปลี่ยน และดุลการชำระเงินเป็น CSV time series ขณะที่กรมสรรพากร RD ส่งออกข้อมูล e-Tax Invoice และ withholding tax เป็น CSV ที่ต้องปรับเป็น JSON เพื่อเข้ากับ schema ของระบบ ตลาดหลักทรัพย์แห่งประเทศไทย SET ก็มี API ที่คายไฟล์ CSV ของราคาหุ้นและดัชนีให้นัก quant ใช้ตัวแปลงนี้แปลงเป็น JSON ในเครื่อง

การแปลง CSV เป็น JSON คืออะไร?

CSV (Comma-Separated Values, RFC 4180) เป็นรูปแบบข้อความแบบตารางที่แบนราบ; JSON (JavaScript Object Notation, RFC 8259) เป็นรูปแบบข้อความรูปทรงต้นไม้สำหรับข้อมูลแบบมีโครงสร้าง การแปลง CSV เป็น JSON เปลี่ยนตารางที่เป็นมิตรกับสเปรดชีตให้กลายเป็นอาร์เรย์ออบเจ็กต์ที่เป็นมิตรกับ API — หนึ่งออบเจ็กต์ต่อหนึ่งแถว โดยแถวหัวทำหน้าที่จัดเตรียมคีย์ — โดยไม่ต้องพิมพ์เซลล์ใหม่แม้แต่เซลล์เดียว

การแปลง CSV เป็น JSON ทำงานอย่างไร?

ทุกการแปลงทำงานภายในเบราว์เซอร์ของคุณ ขั้นตอนหลักคือ:

  1. คุณวาง CSV ลงในช่องป้อนข้อมูลและกดแปลง; เครื่องมือจะแยกวิเคราะห์ข้อความและแสดงอาร์เรย์ JSON ของออบเจ็กต์ในช่องผลลัพธ์
  2. สเตตแมชชีนทีละอักขระ (FIELD_START → IN_UNQUOTED_FIELD หรือ IN_QUOTED_FIELD) เดินผ่านอินพุต เคารพการเอสเคปเครื่องหมายคำพูดแบบ "" รู้จักทั้งตัวสิ้นสุดแถว \r\n และ \n และผลิตอาร์เรย์ของสตริงแบบ 2 มิติเป็นการแทนค่ากลาง
  3. ถ้าแถวแรกถูกทำเครื่องหมายเป็นหัว เซลล์ของมันจะกลายเป็นคีย์ออบเจ็กต์ ถ้าไม่ เครื่องมือจะสร้างคีย์สังเคราะห์ field0, field1, … เพื่อให้ทุกแถวยังคงแมปไปยังออบเจ็กต์ที่สมบูรณ์
  4. ตัวคั่น (คอมมา เซมิโคลอน แท็บ ไปป์ หรือตรวจจับอัตโนมัติ) และการบีบบังคับประเภท (ตัวเลข / บูลีน / null) ทั้งหมดปรับได้ เมื่อเปิดบีบบังคับ 30 กลายเป็นตัวเลข 30 และ true กลายเป็นบูลีน เมื่อปิด ทุกเซลล์จะอยู่เป็นสตริง
  5. ผลลัพธ์ถูกเขียนไปยัง textarea แบบอ่านอย่างเดียวในรูปแบบข้อความ JSON.stringify และลิงก์ดาวน์โหลดสร้าง Blob ด้วย MIME type application/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 สคริปต์ หรือการตรวจสอบโค้ดได้โดยตรง — โดยไม่อัปโหลดแม้แต่ไบต์เดียว