T

Text Machine

เครื่องมือข้อความทรงพลัง ในเบราว์เซอร์ของคุณ

ตัวแปลง CSV เป็น JSON

แปลง CSV หรือ TSV ให้เป็น JSON ที่สะอาดตาในเบราว์เซอร์ของคุณ แถวแรกจะกลายเป็นคีย์ ระบบตรวจจับตัวคั่นให้อัตโนมัติ และคุณจะเก็บแต่ละค่าไว้เป็นข้อความ หรือให้แปลงตัวเลขและบูลีนตามชนิดก็ได้ — โดยไม่มีการอัปโหลดข้อมูลใด ๆ

ตัวคั่น

ผลลัพธ์

ค่า

แถวแรกจะกลายเป็นคีย์ของแต่ละอ็อบเจกต์

CSV
JSON

JSON ของคุณจะแสดงที่นี่

วิธีใช้ ตัวแปลง CSV เป็น JSON

  1. 1

    วาง CSV ของคุณ

    วางข้อมูล CSV หรือ TSV โดยให้แต่ละระเบียนอยู่บรรทัดละหนึ่งรายการ และเก็บชื่อคอลัมน์ไว้ในแถวแรกเพื่อให้นำไปใช้เป็นคีย์ได้

  2. 2

    เลือกตัวคั่น

    ปล่อยไว้ที่อัตโนมัติเพื่อตรวจจับจุลภาค อัฒภาค หรือแท็บให้เอง หรือจะเลือกตัวคั่นที่ข้อมูลของคุณใช้ก็ได้

  3. 3

    เลือกรูปแบบผลลัพธ์

    ใช้อ็อบเจกต์เพื่อเปลี่ยนแต่ละแถวให้เป็นอ็อบเจกต์ที่มีคีย์ตามหัวตาราง หรือใช้แถวเพื่อเก็บทุกบรรทัดไว้เป็นอาร์เรย์แบบเรียบง่าย สลับค่าไปเป็นตามชนิดเพื่ออ่านตัวเลขและบูลีนเป็นชนิดข้อมูล JSON จริง

  4. 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 ได้อย่างไร
วาง CSV ของคุณโดยให้ชื่อคอลัมน์อยู่ในแถวแรก แล้ว JSON ที่จัดรูปแบบแล้วจะปรากฏด้านล่างทันที ใช้ปุ่มคัดลอกเพื่อนำผลลัพธ์ไปใช้ ทุกอย่างทำงานในเบราว์เซอร์ของคุณ
แถวแรกจำเป็นต้องเป็นหัวตารางหรือไม่
ในโหมดอ็อบเจกต์ แถวแรกจะถูกใช้เป็นคีย์ของทุกอ็อบเจกต์ หากข้อมูลของคุณไม่มีหัวตาราง ให้สลับไปที่โหมดแถว แล้วแต่ละบรรทัดจะกลายเป็นอาร์เรย์ของค่าธรรมดาแทน
เครื่องมือนี้อ่านแท็บหรืออัฒภาคได้ด้วย ไม่ใช่แค่จุลภาคใช่ไหม
ใช่ โหมดอัตโนมัติตรวจจับข้อมูลที่คั่นด้วยจุลภาค อัฒภาค และแท็บ ดังนั้นทั้งข้อมูลที่คัดลอกจากสเปรดชีตและ CSV แบบยุโรปก็แปลงได้โดยไม่ต้องเปลี่ยนการตั้งค่าใด ๆ
ตัวเลขและบูลีนถูกจัดการอย่างไร
โดยค่าเริ่มต้น ทุกค่าจะยังคงเป็นสตริง สลับค่าไปเป็นตามชนิด แล้วเครื่องมือจะอ่านตัวเลขล้วนเป็นตัวเลข JSON อ่าน true และ false เป็นบูลีน และอ่านคำว่า null เป็นค่า null จริง
ข้อมูลของฉันถูกอัปโหลดไปที่ใดหรือไม่
ไม่ การแปลงทั้งหมดเกิดขึ้นภายในเบราว์เซอร์ของคุณด้วย JavaScript ดังนั้น CSV ของคุณจึงไม่เคยออกจากอุปกรณ์ และไม่มีการจัดเก็บข้อมูลไว้บนเซิร์ฟเวอร์

เครื่องมือที่เกี่ยวข้อง

ทำงานต่อด้วยเครื่องมือที่มีประโยชน์เหล่านี้

ตัวแปลง JSON เป็น CSV

ตัวแปลง Unix Timestamp

ตัวแปลง JSON เป็น YAML

ตัวแปลงข้อความเป็นไบนารี

ตัวแปลงข้อความเป็นเลขฐานสิบหก

ตัวแปลรหัสมอร์ส