ตัวแปลง CSV เป็น JSON
แปลง CSV หรือ TSV ให้เป็น JSON ที่สะอาดตาในเบราว์เซอร์ของคุณ แถวแรกจะกลายเป็นคีย์ ระบบตรวจจับตัวคั่นให้อัตโนมัติ และคุณจะเก็บแต่ละค่าไว้เป็นข้อความ หรือให้แปลงตัวเลขและบูลีนตามชนิดก็ได้ — โดยไม่มีการอัปโหลดข้อมูลใด ๆ
ตัวคั่น
ผลลัพธ์
ค่า
แถวแรกจะกลายเป็นคีย์ของแต่ละอ็อบเจกต์
JSON ของคุณจะแสดงที่นี่
วิธีใช้ ตัวแปลง CSV เป็น JSON
- 1
วาง CSV ของคุณ
วางข้อมูล CSV หรือ TSV โดยให้แต่ละระเบียนอยู่บรรทัดละหนึ่งรายการ และเก็บชื่อคอลัมน์ไว้ในแถวแรกเพื่อให้นำไปใช้เป็นคีย์ได้
- 2
เลือกตัวคั่น
ปล่อยไว้ที่อัตโนมัติเพื่อตรวจจับจุลภาค อัฒภาค หรือแท็บให้เอง หรือจะเลือกตัวคั่นที่ข้อมูลของคุณใช้ก็ได้
- 3
เลือกรูปแบบผลลัพธ์
ใช้อ็อบเจกต์เพื่อเปลี่ยนแต่ละแถวให้เป็นอ็อบเจกต์ที่มีคีย์ตามหัวตาราง หรือใช้แถวเพื่อเก็บทุกบรรทัดไว้เป็นอาร์เรย์แบบเรียบง่าย สลับค่าไปเป็นตามชนิดเพื่ออ่านตัวเลขและบูลีนเป็นชนิดข้อมูล JSON จริง
- 4
คัดลอก JSON
คัดลอก JSON ที่จัดรูปแบบแล้วไปวางในโค้ด คำขอ API หรือไฟล์ตั้งค่าของคุณได้ทันที
การแยกวิเคราะห์ CSV ให้เป็น JSON: หัวตาราง ชนิดข้อมูล และความไม่สม่ำเสมอ
CSV ดูเรียบง่าย แต่จริง ๆ ไม่ใช่
ไฟล์ที่คั่นด้วยจุลภาคดูเหมือนเป็นเรื่องเล็กน้อย — มีค่า มีจุลภาค มีการขึ้นบรรทัดใหม่ — แต่ความเรียบง่ายนั้นคือกับดัก CSV ไม่มีมาตรฐานอย่างเป็นทางการที่ถูกบังคับใช้ทั่วทั้งวงการ เอกสาร RFC 4180 บันทึกธรรมเนียมปฏิบัติที่ใช้กันทั่วไปไว้ก็จริง แต่โปรแกรมส่งออกแต่ละตัวกลับเห็นไม่ตรงกันในเรื่องการครอบเครื่องหมายอัญประกาศ การจบบรรทัด และตัวคั่น กรณียาก ๆ คือกรณีที่การตัดสตริงด้วยจุลภาคอย่างง่าย ๆ จะทำพลาดพอดี นั่นคือ ค่าที่ตัวมันเองมีจุลภาคอยู่ ค่าที่มีอักขระอัญประกาศอยู่ และค่าที่กินพื้นที่หลายบรรทัด
ตัวแยกวิเคราะห์ที่แท้จริงจะรับมือกับสิ่งเหล่านั้นด้วยการอ่านกฎการครอบอัญประกาศ ไม่ใช่แค่ตัดข้อความ ฟิลด์ที่ถูกห่อด้วยเครื่องหมายอัญประกาศคู่สามารถมีจุลภาคและอัญประกาศที่ถูกหลีก (เขียนเป็นอัญประกาศคู่สองตัวติดกัน) ได้อย่างถูกต้องตามกฎ และเครื่องมือนี้ก็เคารพกฎนั้นเป๊ะ ๆ เซลล์ที่เก็บค่า "Portland, Oregon" จะยังคงเป็นค่าเดียวแทนที่จะกลายเป็นสองคอลัมน์ และอัญประกาศคู่ที่ซ้ำกันภายในฟิลด์จะยุบลงเหลือเป็นอัญประกาศแท้ ๆ เพียงตัวเดียว กรณีเดียวที่เครื่องมือไม่สร้างกลับให้คือค่าที่มีการขึ้นบรรทัดใหม่อยู่ภายในเครื่องหมายอัญประกาศ เพราะมันจะแยกไฟล์ออกเป็นระเบียนทีละบรรทัดก่อน ดังนั้นให้เก็บแต่ละระเบียนไว้ในบรรทัดของตัวเอง หรือตัดการขึ้นบรรทัดใหม่ที่อยู่ในเซลล์ออกเสียก่อนแปลง
รูปแบบผลลัพธ์: อาร์เรย์ของอ็อบเจกต์
รูปแบบ JSON ที่เป็นธรรมชาติของตารางคืออาร์เรย์ของอ็อบเจกต์ หนึ่งอ็อบเจกต์ต่อหนึ่งแถวข้อมูล แถวแรกของ CSV จะถูกถือว่าเป็นหัวตาราง และเซลล์หัวตารางแต่ละเซลล์จะกลายเป็นคีย์ที่ทุกอ็อบเจกต์ใช้ร่วมกัน เมื่อคุณวางสามคอลัมน์ชื่อ name, role และ city ตามด้วยแถวข้อมูลสองแถว คุณจะได้อาร์เรย์ของอ็อบเจกต์สองตัว แต่ละตัวมีคีย์สามคีย์นั้นจับคู่กับค่าของแถวนั้น ๆ นี่คือรูปแบบที่ API และสคริปต์นำเข้าส่วนใหญ่คาดหวัง
หากข้อมูลของคุณไม่มีแถวหัวตาราง การจับคู่นั้นก็จะไม่มีอะไรให้ดึงคีย์มาใช้ ให้สลับไปที่โหมดผลลัพธ์แบบแถว แล้วแต่ละบรรทัดจะกลายเป็นอาร์เรย์ของค่าธรรมดาแทน ซึ่งคงโครงตารางดิบไว้โดยไม่ต้องคิดชื่อขึ้นมาเอง การเลือกโหมดผลลัพธ์ให้ถูกตั้งแต่แรกช่วยให้คุณไม่ได้อ็อบเจกต์ที่มีคีย์มาจากแถวข้อมูลแถวแรกโดยบังเอิญ
ทุกอย่างเป็นสตริงจนกว่าคุณจะสั่งเป็นอย่างอื่น
นี่คือข้อควรระวังที่สำคัญที่สุดเพียงข้อเดียวเมื่ออ่าน CSV รูปแบบนี้ไม่ได้พกข้อมูลชนิดมาด้วยเลยแม้แต่น้อย ทุกเซลล์ล้วนเป็นข้อความ หากไม่เข้าไปจัดการ ตัวเลข 42 จะกลายเป็นสตริง 42 คำว่า true จะกลายเป็นสตริง true และเซลล์ว่างจะกลายเป็นสตริงว่าง โค้ดที่คาดหวังว่าจะได้ตัวเลขหรือบูลีนจริง ๆ จากฟิลด์เหล่านั้นจะทำงานผิดเพี้ยนแบบเงียบ ๆ
เมื่อเปิดใช้ค่าตามชนิด ตัวแยกวิเคราะห์จะเลื่อนข้อความที่เป็นตัวเลขล้วนให้กลายเป็นตัวเลข JSON เลื่อนคำว่า true และ false ให้เป็นบูลีน และเลื่อนคำว่า null ให้เป็นค่า null จริง การอนุมานชนิดนั้นสะดวกแต่โดยเนื้อแท้แล้วอาศัยการคาดเดาตามหลักการ จึงต้องระวังกรณีขอบ ๆ ตัวระบุที่มีเลขศูนย์นำหน้า หมายเลขโทรศัพท์ รหัสไปรษณีย์ และสตริงที่ดูคล้ายเลขเวอร์ชัน ในทางเทคนิคแล้วดูเหมือนตัวเลข แต่โดยปกติควรคงไว้เป็นข้อความ เมื่อความเที่ยงตรงของฟิลด์เหล่านั้นสำคัญ ให้คงค่าไว้เป็นข้อความแล้วแปลงอย่างตั้งใจในโค้ดของคุณเอง
การตรวจจับตัวคั่นและ TSV
ไม่ใช่ทุกไฟล์ค่าที่คั่นด้วยตัวแบ่งจะใช้จุลภาค สเปรดชีตในหลายภาษาท้องถิ่นของยุโรปส่งออกด้วยอัฒภาค เพราะที่นั่นจุลภาคใช้เป็นเครื่องหมายจุดทศนิยม และการคัดลอกช่วงข้อมูลออกมาจากสเปรดชีตตรง ๆ มักได้ค่าที่คั่นด้วยแท็บ โหมดอัตโนมัติจะตรวจดูบรรทัดแรกของอินพุตของคุณแล้วเลือกตัวคั่นจากจุลภาค อัฒภาค หรือแท็บ ตัวที่ปรากฏบ่อยที่สุดในบรรทัดนั้น ดังนั้นไฟล์จุลภาค ไฟล์อัฒภาค และ TSV จึงแปลงได้โดยที่คุณไม่ต้องเปลี่ยนการตั้งค่า
การตรวจจับอัตโนมัติเชื่อถือได้กับข้อมูลที่สะอาด แต่อาจถูกหลอกได้ด้วยไฟล์ที่บรรทัดแรกบังเอิญมีตัวแบ่งชนิดหนึ่งมากกว่าตัวคั่นจริง หากคอลัมน์ออกมาผิด ให้แทนที่การคาดเดานั้นแล้วกำหนดตัวคั่นเองอย่างชัดเจน นั่นจะขจัดความกำกวมได้ในขั้นตอนเดียว
การเข้ารหัส BOM และปีศาจล่องหนตัวอื่น ๆ
ไฟล์ที่ส่งออกจากซอฟต์แวร์สเปรดชีตมักขึ้นต้นด้วย byte-order mark ซึ่งเป็นอักขระล่องหนที่อยู่ตรงจุดเริ่มต้นสุดของไฟล์ หากปล่อยไว้ มันจะถูกเชื่อมติดเข้ากับชื่อหัวตารางอันแรก ทำให้คีย์ที่ควรจะเป็น id กลายเป็นสตริงที่ต่างออกไปเล็กน้อยแบบเงียบ ๆ และการค้นหาด้วย id ของคุณจะพลาดไป การจบบรรทัดที่ไม่สอดคล้องกันระหว่างระบบปฏิบัติการ และบรรทัดว่างที่ห้อยท้าย คือผู้ต้องสงสัยอีกสองรายตามปกติที่ทำให้เกิดแถวผีหรือคอลัมน์ที่เคลื่อนไปหนึ่งช่อง
เครื่องมือนี้ตัดช่องว่างหัวท้ายของทุกหัวตารางและทุกเซลล์ ดังนั้นปีศาจตามปกติเหล่านั้นจึงจัดการตัวเองได้เป็นส่วนใหญ่ มันรองรับการจบบรรทัดทั้งแบบ Unix และ Windows และเพราะ byte-order mark ที่นำหน้าถูกนับเป็นช่องว่างที่ตัดได้ มันจึงถูกตัดออกจากหัวตารางอันแรกโดยอัตโนมัติแทนที่จะถูกเชื่อมติดเข้ากับคีย์ นั่นคือเหตุผลที่การวางไฟล์ส่งออกดิบจากสเปรดชีตที่นี่มักใช้งานได้เลย หากคีย์ที่แปลงแล้วยังคงไม่ยอมจับคู่ในโค้ด ให้สงสัยอักขระแปลกปลอมที่การตัดช่องว่างไม่ได้เอาออก เช่น zero-width space แล้วส่งออกไฟล์ใหม่เป็น UTF-8 ธรรมดา
แถวที่ไม่เท่ากันและเซลล์ว่าง
สเปรดชีตในชีวิตจริงนั้นรกรุงรัง บางแถวมีเซลล์ว่างห้อยท้าย บางแถวขาดฟิลด์ไปเลย และบรรทัดว่างแปลกปลอมหนึ่งบรรทัดแอบเข้ามาตอนท้าย เมื่อแถวหนึ่งมีค่าน้อยกว่าจำนวนหัวตาราง ฟิลด์ที่ขาดไปจะปรากฏเป็นสตริงว่างแทนที่จะทำให้การแปลงล่ม ดังนั้นอาร์เรย์ผลลัพธ์จึงยังคงเป็นรูปสี่เหลี่ยมและทุกอ็อบเจกต์ยังคงพกคีย์ครบชุด
ก่อนจะเชื่อผลลัพธ์ ให้ไล่สายตาดูแถวที่บ่งบอกว่าค่าดูเหมือนเลื่อนไปหนึ่งคอลัมน์ นั่นคือลายเซ็นของตัวคั่นที่ไม่ได้ถูกหลีกอยู่ภายในฟิลด์ที่ไม่ได้ครอบอัญประกาศต้นทาง การแก้ไขไฟล์ต้นฉบับ (ครอบค่าที่เป็นปัญหาด้วยอัญประกาศ) เชื่อถือได้มากกว่าการพยายามไปปะ JSON ทีหลังอย่างมาก
CSV เป็น JSON มีประโยชน์ตรงไหน
การใช้งานที่พบบ่อยที่สุดคือการเปลี่ยนสเปรดชีตที่มีคนยื่นให้คุณ ให้กลายเป็นข้อมูลที่โปรแกรมของคุณนำไปใช้ได้ เช่น ป้อนข้อมูลตั้งต้นให้ฐานข้อมูล สร้างเนื้อหาของคำขอ API สร้างไฟล์ตั้งค่า หรือป้อนข้อมูลให้ test fixture ผู้ที่ไม่ใช่นักพัฒนาใช้ชีวิตอยู่กับสเปรดชีต ส่วนนักพัฒนาใช้ชีวิตอยู่กับ JSON และการแปลงนี้คือสะพานเชื่อมระหว่างสองโลกโดยไม่ต้องเขียนตัวแยกวิเคราะห์แบบใช้แล้วทิ้งทุกครั้ง
เพราะการแยกวิเคราะห์ทั้งหมดทำงานในเบราว์เซอร์ของคุณ คุณจึงแปลงไฟล์ส่งออกที่เป็นข้อมูลอ่อนไหวได้ เช่น รายชื่อลูกค้า เมตริกภายใน แถวข้อมูลทางการเงิน โดยไม่ต้องอัปโหลดอะไรไปยังบริการของบุคคลที่สาม ขอให้จำกฎหนึ่งข้อไว้เพื่อความปลอดภัยในขั้นถัดไป คือ ให้ตัดสินใจอย่างมีสติว่าแต่ละคอลัมน์ควรแปลงตามชนิดหรือคงไว้เป็นข้อความ เพราะการบังคับชนิดแบบเงียบ ๆ คือเหตุผลที่พบบ่อยที่สุดที่ทำให้ข้อมูลที่นำเข้ามามีพฤติกรรมต่างจากที่สเปรดชีตแสดงไว้
คำถามที่พบบ่อย
ฉันจะแปลง CSV เป็น JSON ได้อย่างไร
แถวแรกจำเป็นต้องเป็นหัวตารางหรือไม่
เครื่องมือนี้อ่านแท็บหรืออัฒภาคได้ด้วย ไม่ใช่แค่จุลภาคใช่ไหม
ตัวเลขและบูลีนถูกจัดการอย่างไร
ข้อมูลของฉันถูกอัปโหลดไปที่ใดหรือไม่
เครื่องมือที่เกี่ยวข้อง
ทำงานต่อด้วยเครื่องมือที่มีประโยชน์เหล่านี้