ตัวแปลง JSON ↔ CSV
ตัวแปลง JSON ↔ CSV
แปลงระหว่าง CSV/TSV และ JSON พร้อมการตรวจจับตัวคั่นอัตโนมัติ การแมปแถวหัวตาราง การตัดช่องว่าง และการข้ามบรรทัดว่าง เหมาะสำหรับการนำเข้า/ส่งออกข้อมูล การประมวลผลสเปรดชีต และการเตรียม payload ของ API
🚀 เริ่มต้นอย่างรวดเร็ว
- วางหรือพิมพ์ข้อมูล CSV/TSV ในตัวแก้ไขฝั่งขวา แล้วฝั่ง JSON ทางซ้ายจะซิงก์ให้อัตโนมัติ
- คุณสามารถพิมพ์ JSON ในตัวแก้ไขฝั่งซ้ายได้เช่นกัน และฝั่ง CSV ทางขวาจะอัปเดตตามอัตโนมัติ
- ค่าเริ่มต้นของตัวคั่นคือ "อัตโนมัติ" เครื่องมือจะอ่านบรรทัดแรกแล้วตรวจจับให้ว่าใช้เครื่องหมายจุลภาค แท็บ อัฒภาค หรือเส้นตั้ง (|)
- เมื่อเปิด "ใช้แถวหัวตาราง" แถวแรกของ CSV จะถูกใช้เป็นคีย์ของออบเจ็กต์ JSON; หากปิด จะถูกแปลงเป็นอาร์เรย์สองมิติ
- ใช้ "ตัดช่องว่างหัวท้ายฟิลด์" และ "ข้ามบรรทัดว่าง" เพื่อทำความสะอาดข้อมูล CSV ที่ไม่เป็นระเบียบ
- ดาวน์โหลดได้แยกแต่ละฝั่ง: ฝั่ง JSON จะได้ไฟล์ .json ส่วนฝั่ง CSV จะได้ .csv หรือ .tsv ตามตัวคั่นที่เลือก
📌 สถานการณ์การใช้งานทั่วไป
- แปลง Excel เป็น JSON: คัดลอกช่วงเซลล์จาก Excel (คั่นด้วยแท็บ) วางในฝั่ง CSV แล้วแปลงเป็นอาร์เรย์ออบเจ็กต์ JSON ได้ทันที
- แปลงผลลัพธ์ API เป็นตาราง: แปลง JSON เป็น CSV เพื่อนำไปวิเคราะห์ต่อใน Excel หรือ Google ชีต
- เตรียมนำเข้าฐานข้อมูล: แปลงชุดข้อมูล CSV เป็น JSON เพื่อใช้กับการนำเข้าแบบกลุ่มผ่าน API
- วิเคราะห์ล็อก: แปลงล็อกแบบ CSV เป็น JSON เพื่อคิวรีแบบมีโครงสร้างด้วยเครื่องมืออย่าง jq
- ย้ายคอนฟิก: สลับแปลงระหว่างตารางแมปปิงแบบ CSV กับไฟล์คอนฟิกแบบ JSON
- ทำความสะอาดข้อมูล: ใช้การตัดช่องว่างและการข้ามบรรทัดว่างเพื่อล้างข้อมูลที่ส่งออกมาจากระบบภายนอกอย่างรวดเร็ว
🧭 คำแนะนำการใช้งาน
- ข้อมูลที่คัดลอกจาก Excel มักคั่นด้วยแท็บ ซึ่งโหมดอัตโนมัติจะตรวจจับได้ถูกต้อง หากตรวจจับพลาดให้เลือกตัวคั่นเอง
- เมื่อเปิด "ใช้แถวหัวตาราง" แถวแรกจะไม่ถูกนับเป็นข้อมูล แต่ถือเป็นชื่อคอลัมน์ หากไฟล์ CSV ไม่มีหัวตารางให้ปิดตัวเลือกนี้
- หากมีชื่อคอลัมน์ซ้ำกัน เครื่องมือจะเติม suffix อัตโนมัติ (เช่น name, name_2) เพื่อให้คีย์ JSON ไม่ซ้ำ
- การแปลง JSON → CSV เหมาะกับอาร์เรย์ของออบเจ็กต์แบบแบน ออบเจ็กต์หรืออาร์เรย์ที่ซ้อนกันจะถูกแปลงเป็นสตริง JSON ในเซลล์
- ฟิลด์ที่มีตัวคั่น ขึ้นบรรทัดใหม่ หรือเครื่องหมายอัญประกาศคู่ จะถูกครอบด้วยอัญประกาศและ escape ให้อัตโนมัติตามกติกา CSV
⚠️ ข้อจำกัดและความเข้ากันได้
- CSV เป็นรูปแบบตารางแบบแบน จึงไม่สามารถแทนโครงสร้างแบบซ้อนได้โดยตรง ออบเจ็กต์/อาร์เรย์ JSON ที่ซ้อนกันจะถูก serialize เป็นสตริง และเมื่อแปลงกลับจะกู้โครงสร้างเดิมได้ไม่ครบ
- ค่าทั้งหมดใน CSV เป็นข้อความ หลังแปลงไป-กลับ JSON → CSV → JSON ตัวเลขและบูลีนอาจกลายเป็นสตริง
- เครื่องมือจะลบ UTF-8 BOM (\uFEFF) ให้อัตโนมัติ แต่ไม่รองรับ encoding อื่น (เช่น GBK/Shift-JIS) ควรแปลงเป็น UTF-8 ก่อน
- เช่นเดียวกับ JSON ใน JavaScript เครื่องมือนี้มีข้อจำกัดเลขทศนิยมแบบ IEEE 754 จำนวนเต็มที่เกินช่วงปลอดภัย 53 บิตอาจสูญเสียความแม่นยำ
🔒 ความเป็นส่วนตัวและความปลอดภัย
- การประมวลผลทั้งหมดเกิดขึ้นภายในเบราว์เซอร์ของคุณ ข้อมูลจะไม่ถูกส่งออกจากอุปกรณ์
❓ คำถามที่พบบ่อย
CSV คืออะไร แล้วต่างจาก TSV/Excel อย่างไร?
CSV (Comma-Separated Values) คือรูปแบบตารางแบบข้อความล้วน โดยหนึ่งบรรทัดแทนหนึ่งระเบียน และคั่นฟิลด์ด้วยเครื่องหมายจุลภาค ส่วน TSV เป็นรูปแบบที่คั่นด้วยแท็บ Excel สามารถเปิดและส่งออกทั้งสองแบบได้ แต่ไฟล์ .xlsx เองเป็นรูปแบบไบนารีอีกชนิดหนึ่ง เครื่องมือนี้รองรับ CSV/TSV แบบข้อความ ไม่รองรับไฟล์ .xlsx โดยตรง ในอดีต CSV ไม่ได้มีมาตรฐานเดียวที่เคร่งครัด จนกระทั่ง RFC 4180 (ปี 2005) ได้สรุปกติกาพื้นฐานไว้ เช่น คั่นฟิลด์ด้วยจุลภาค ฟิลด์ที่มีอักขระพิเศษต้องครอบด้วยอัญประกาศคู่ และอัญประกาศคู่ภายในฟิลด์ต้อง escape เป็นอัญประกาศคู่สองตัว ความต่างของการรองรับในแต่ละโปรแกรมยังคงมีอยู่ จึงมักเกิดปัญหาเวลา import/export
โหมดตรวจจับตัวคั่นแบบ "อัตโนมัติ" ทำงานอย่างไร? มีโอกาสพลาดไหม?
เครื่องมือจะอ่านบรรทัดแรกแล้วนับจำนวนเครื่องหมายจุลภาค แท็บ อัฒภาค และเส้นตั้ง (|) ที่อยู่นอกข้อความในอัญประกาศ จากนั้นเลือกตัวที่พบมากที่สุดเป็นตัวคั่น โดยทั่วไปแม่นยำกับไฟล์ CSV/TSV มาตรฐาน แต่มีโอกาสพลาดได้ในกรณีมีข้อมูลเพียงคอลัมน์เดียว (ไม่ปรากฏตัวคั่น) หรือค่าข้อมูลมีอักขระตัวคั่นจำนวนมาก หากเกิดขึ้นให้เลือกตัวคั่นด้วยตนเอง
การเปิด/ปิด "ใช้แถวหัวตาราง" ต่างกันอย่างไร?
เมื่อเปิดใช้งาน แถวแรกของ CSV จะถูกใช้เป็นชื่อคอลัมน์ และแต่ละแถวข้อมูลจะถูกแปลงเป็นออบเจ็กต์ JSON โดยใช้ชื่อคอลัมน์เป็นคีย์ (เช่น {"name": "Alice", "age": "30"}) เมื่อปิดใช้งาน ทุกแถวรวมถึงแถวแรกจะถูกมองเป็นข้อมูลและแปลงเป็นอาร์เรย์สองมิติ (เช่น [["name", "age"], ["Alice", "30"]]) สำหรับการแปลง JSON → CSV หากเปิดตัวเลือกนี้ ระบบจะเขียนคีย์ของออบเจ็กต์เป็นแถวแรกของ CSV
ถ้า JSON มีออบเจ็กต์ซ้อนกัน แปลงผ่าน CSV แล้วจะย้อนกลับได้ครบไหม?
ไม่ครบทั้งหมด ระหว่าง JSON → CSV ออบเจ็กต์/อาร์เรย์ที่ซ้อนกันจะถูก JSON.stringify เป็นข้อความในเซลล์ เมื่อแปลง CSV → JSON กลับมา ค่าดังกล่าวจะยังเป็นสตริงและไม่ถูก parse กลับเป็นออบเจ็กต์อัตโนมัติ หากต้องการคงโครงสร้าง แนะนำให้ flatten JSON ก่อน
ข้อมูลที่คัดลอกจาก Excel แปลงได้ทันทีไหม?
ได้ เมื่อคัดลอกช่วงเซลล์จาก Excel แล้ววางในตัวแก้ไข CSV ข้อมูลมักเป็นแบบคั่นด้วยแท็บ โหมดอัตโนมัติจะตรวจจับเป็น TSV และแปลงได้ถูกต้อง หากต้องการดาวน์โหลดเป็นไฟล์ .csv แบบคั่นด้วยจุลภาค ให้สลับตัวคั่นเป็นจุลภาคก่อนดาวน์โหลด
อัญประกาศและตัวขึ้นบรรทัดใหม่ในฟิลด์ CSV ถูกจัดการอย่างไร?
เครื่องมือนี้ยึดตาม RFC 4180: หากฟิลด์มีตัวคั่น ขึ้นบรรทัดใหม่ หรืออัญประกาศคู่ จะครอบทั้งฟิลด์ด้วยอัญประกาศคู่ และอัญประกาศคู่ภายในฟิลด์จะ escape เป็นอัญประกาศคู่ต่อกันสองตัว ("") ทั้งขั้นตอน parse และ generate ใช้กติกาเดียวกัน หากมีอัญประกาศที่ปิดไม่ครบ จะขึ้นข้อผิดพลาด "คำพูดที่ไม่ปิดในการป้อนข้อมูล CSV"