ข้ามไปยังเนื้อหา
LeedyBox
สนับสนุน

ตัวแปลง JSON / CSV / YAML / SQL / XML

แปลงและตรวจสอบข้อมูลที่ใช้บ่อยในงานพัฒนาได้ในเบราว์เซอร์ของคุณ

แปลงเป็น:

ข้อมูลเข้า SQL รองรับคำสั่ง INSERT INTO ... VALUES (รูปแบบ MySQL, PostgreSQL, SQL Server และ SQLite) สำหรับผลลัพธ์ของ SELECT ให้วางเป็น CSV ค่าใน CSV จะถูกอ่านเป็นข้อความ แอตทริบิวต์ XML จะเก็บไว้ใน "@attributes" และข้อความของอิลิเมนต์ที่อยู่คู่กับแอตทริบิวต์หรืออิลิเมนต์ลูกจะเก็บไว้ใน "#text" ทุกอย่างประมวลผลในเบราว์เซอร์ของคุณ

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

รูปแบบต่าง ๆ ไม่ได้สอดคล้องกันแบบหนึ่งต่อหนึ่ง ชนิดข้อมูล ค่าที่ซ้อนกัน อักขระพิเศษ และตัวเลขขนาดใหญ่มากอาจเปลี่ยนไประหว่างการแปลง SQL ที่สร้างขึ้นไม่ได้ถูกตรวจสอบกับฐานข้อมูลของคุณ จึงควรทดสอบกับสำเนาก่อนรันกับข้อมูลจริง

วิธีใช้

  1. วางข้อมูลลงในช่อง “ข้อมูลต้นทาง” ปล่อยเมนู “ข้อมูลเข้า” ไว้ที่ “ตรวจจับอัตโนมัติ” หรือเลือก JSON, YAML, CSV, SQL หรือ XML หากคุณรู้รูปแบบของข้อมูล
  2. คลิกรูปแบบที่อยู่ข้าง “แปลงเป็น” ผลลัพธ์จะปรากฏใน “ผลลัพธ์” และข้อความเหนือช่องจะยืนยันการแปลงพร้อมระบุสิ่งที่ควรตรวจสอบ เช่น ตัวเลขขนาดใหญ่ที่อาจสูญเสียความแม่นยำ คีย์ที่ถูกเปลี่ยนชื่อ หรือคำสั่ง SQL ที่ถูกละเว้น หากอ่านข้อมูลเข้าไม่ได้ ข้อความจะแสดงข้อผิดพลาดและ “ผลลัพธ์” จะถูกล้าง
  3. ปรับตัวเลือกที่แสดงสำหรับรูปแบบนั้น เช่น “ตัวคั่น” และ “ข้อมูลซ้อน” สำหรับ CSV “ฐานข้อมูล SQL” “คำสั่ง” และ “ตาราง” สำหรับ SQL หรือ “ราก” และ “รายการ” สำหรับ XML การเปลี่ยนแต่ละครั้งจะแปลงข้อมูลเข้าปัจจุบันใหม่ จึงไม่ต้องคลิกปุ่มรูปแบบซ้ำ
  4. หากต้องการตรวจข้อมูลเข้าโดยไม่แปลง ให้คลิก “ตรวจไวยากรณ์” เครื่องมือจะแจ้งว่าไวยากรณ์ถูกต้อง หรือแจ้งว่าผิดพลาดตรงไหน พร้อมบรรทัดและคอลัมน์เมื่อตัวแยกวิเคราะห์ให้ข้อมูลนั้นมา
  5. ตรวจสอบ “ผลลัพธ์” แล้วคลิก “คัดลอกผลลัพธ์” ส่วน “ล้าง” จะล้างทั้งสองช่อง

คำถามที่พบบ่อย

ข้อมูลที่ฉันวางถูกส่งไปที่ใดหรือไม่

ไม่ ข้อมูลจะถูกแยกวิเคราะห์และแปลงในเบราว์เซอร์ของคุณด้วย JavaScript และเครื่องมือไม่ได้อัปโหลดข้อมูลไปยัง LeedyBox หรือบันทึกไว้ เมื่อเปิดหน้า หน้าเว็บจะโหลดไลบรารีโอเพนซอร์สสองตัวจาก leedybox.com โดยตรง ได้แก่ js-yaml สำหรับ YAML และ PapaParse สำหรับ CSV ไลบรารีเหล่านี้ทำงานภายในหน้าเว็บ และข้อมูลของคุณไม่ถูกส่งไปที่ใด

“ตรวจจับอัตโนมัติ” เลือกรูปแบบอย่างไร และเมื่อใดควรเลือกรูปแบบเอง

ข้อมูลเข้าที่ขึ้นต้นด้วย { หรือ [ จะอ่านเป็น JSON ที่ขึ้นต้นด้วย < จะอ่านเป็น XML และที่ขึ้นต้นด้วยคีย์เวิร์ด SQL อย่าง INSERT, CREATE, SET, START, UPDATE หรือ WITH ตามด้วยช่องว่าง หรือด้วยความคิดเห็นแบบ -- หรือ /* จะอ่านเป็น SQL ข้อมูลอื่น ๆ จะลองอ่านเป็น CSV เมื่อบรรทัดแรกมีจุลภาค แท็บ หรืออัฒภาค แล้วจึงลองอ่านเป็น YAML ควรเลือกรูปแบบในเมนู “ข้อมูลเข้า” เองในกรณีต่อไปนี้ เมื่อ CSV หรือ YAML ขึ้นต้นด้วยคำที่เป็นคีย์เวิร์ด SQL ด้วย เช่น แถวหัวตาราง CSV ที่ขึ้นต้นด้วย Start date หรือ Update time เพราะข้อมูลจะถูกอ่านเป็น SQL แล้วล้มเหลว เมื่อทุกบรรทัดของข้อมูล YAML มีจุลภาคจำนวนเท่ากัน เช่น title: Hello, world ตามด้วย tags: news, tech เพราะข้อมูลอาจถูกอ่านเป็น CSV เมื่อเป็น CSV ที่คั่นด้วยไปป์หรือมีคอลัมน์เดียว ซึ่งการตรวจจับอัตโนมัติไม่รู้จัก และเมื่ออ่านข้อมูล YAML หรือ CSV ไม่สำเร็จ เพราะการตรวจจับอัตโนมัติจะแจ้งเพียงว่าไม่รู้จักรูปแบบ ขณะที่การเลือกรูปแบบเองจะแสดงข้อผิดพลาดของตัวแยกวิเคราะห์ และในกรณีส่วนใหญ่จะบอกตำแหน่งที่เกิดข้อผิดพลาดด้วย

รับ JSON ที่มีความคิดเห็น จุลภาคท้ายรายการ หรือออบเจ็กต์บรรทัดละหนึ่งรายการได้หรือไม่

เมื่อตั้งเมนู “ข้อมูลเข้า” เป็น JSON เครื่องมือจะรับเฉพาะ JSON ที่ถูกต้อง จึงใช้การตั้งค่านี้ร่วมกับ “ตรวจไวยากรณ์” เพื่อตรวจว่าข้อความเป็น JSON ที่ถูกต้องหรือไม่ เมื่อใช้ “ตรวจจับอัตโนมัติ” ข้อมูลที่ขึ้นต้นด้วย { หรือ [ แต่ไม่ใช่ JSON ที่ถูกต้องจะถูกอ่านเป็นไวยากรณ์โฟลว์ของ YAML หากทำได้ และจะมีหมายเหตุแจ้งไว้ ในกรณีนี้จุลภาคท้ายรายการ เครื่องหมายคำพูดเดี่ยว และคีย์ที่ไม่มีเครื่องหมายคำพูดจะใช้ได้ แต่คีย์ที่ไม่มีเครื่องหมายคำพูดต้องมีช่องว่างหลังทวิภาค เพราะ {a:1} จะถูกอ่านเป็นคีย์ชื่อ a:1 ที่มีค่าเป็น null ความคิดเห็นแบบ // และ /* */ ไม่ใช่ความคิดเห็นใน YAML และอาจไปอยู่ในคีย์หรือค่า หรือทำให้อ่านข้อมูลเข้าไม่ได้ จึงควรลบออกก่อน JSON Lines (NDJSON) มีให้เลือกเป็นรูปแบบผลลัพธ์ แต่จะไม่ถูกอ่านเป็นข้อมูลเข้าเมื่อมีมากกว่าหนึ่งบรรทัด ให้ครอบบรรทัดทั้งหมดด้วย [ และ ] และใส่จุลภาคท้ายทุกบรรทัดยกเว้นบรรทัดสุดท้าย

ทำไม 1.10 จึงกลายเป็น 1.1 หรือ 01234 กลายเป็น 1234 เมื่อแปลงจาก YAML

ค่า YAML ที่ไม่มีเครื่องหมายคำพูดและดูเหมือนตัวเลขจะถูกอ่านเป็นตัวเลข เวอร์ชันอย่าง 1.10 จึงกลายเป็น 1.1 รหัสไปรษณีย์อย่าง 01234 กลายเป็น 1234 เบอร์โทรศัพท์อย่าง 0812345678 กลายเป็น 812345678 และ 0x1F กลายเป็น 31 ให้ใส่ค่าเหล่านี้ไว้ในเครื่องหมายคำพูดใน YAML เพื่อเก็บไว้เป็นข้อความ ตัวแปลงอ่าน YAML ด้วย core schema ของ js-yaml ซึ่งเป็นไปตาม YAML 1.2 ในเรื่องค่าบูลีนและวันที่ ดังนั้น yes, no, on, off และวันที่อย่าง 2026-10-02 จะยังเป็นข้อความ และมีเพียงรูปแบบของ true และ false เช่น True หรือ FALSE ที่กลายเป็นค่าบูลีน เมื่อแปลง JSON เป็น YAML สตริงที่อาจถูกอ่านผิด เช่น "01234", "1.10" หรือ "yes" จะถูกเขียนไว้ในเครื่องหมายคำพูด

ทำไมอิลิเมนต์ XML จึงเป็นออบเจ็กต์ในไฟล์หนึ่ง แต่เป็นอาร์เรย์ในอีกไฟล์หนึ่ง

อิลิเมนต์ลูกที่ซ้ำกันภายใต้อิลิเมนต์แม่เดียวกันจะกลายเป็นอาร์เรย์ แต่ถ้ามีเพียงตัวเดียวจะกลายเป็นค่าธรรมดาหรือออบเจ็กต์ <items> ที่มี <item> หนึ่งตัวจึงให้โครงสร้างต่างจาก <items> ที่มีสองตัว ค่า XML ทุกค่าจะถูกอ่านเป็นข้อความ <id>1</id> จึงกลายเป็น "1" และ 007 ยังคงมีเลขศูนย์นำหน้า ส่วนความคิดเห็นและ processing instruction จะถูกตัดทิ้ง สำหรับผลลัพธ์ CSV และ SQL แถวจะถูกดึงจากอาร์เรย์ที่อยู่ภายในตัวครอบที่มีคีย์เดียวอย่าง <items> ดังนั้นเมื่อมี <item> เพียงตัวเดียว อิลิเมนต์ทั้งหมดจะกลายเป็นข้อความ JSON ในคอลัมน์เดียว สำหรับ CSV ตัวเลือก “แผ่ออก (คอลัมน์ a.b.c)” จะแยกข้อมูลนั้นออกเป็นหลายคอลัมน์

วางไฟล์ dump ของ MySQL หรือ PostgreSQL เป็นข้อมูลเข้า SQL ได้หรือไม่

ได้ หากแถวข้อมูลอยู่ในคำสั่ง INSERT INTO ... VALUES คำสั่งเตรียมการอย่าง CREATE TABLE, SET, LOCK และคำสั่งทำนองเดียวกันจะถูกข้าม คำสั่งอื่นอย่าง DROP TABLE จะถูกละเว้นพร้อมหมายเหตุ และแถวจากหลายตารางจะถูกรวมเป็นรายการเดียว หากคอลัมน์ของแต่ละตารางต่างกัน ให้วางทีละตาราง mysqldump ไม่ใส่ชื่อคอลัมน์ตามค่าเริ่มต้น คอลัมน์จึงถูกตั้งชื่อเป็น column1, column2 ไปตามลำดับ เว้นแต่คุณจะ dump ด้วย --complete-insert ส่วน pg_dump เขียนแถวเป็นบล็อก COPY ตามค่าเริ่มต้น ซึ่งเครื่องมือนี้ไม่อ่าน จึงควร dump ด้วย --column-inserts แทน หาก dump มีฟังก์ชันหรือ stored procedure ด้วย ให้วางเฉพาะคำสั่ง INSERT เพราะเครื่องมือแบ่งข้อมูลเข้าที่เครื่องหมายอัฒภาค คำสั่ง INSERT ที่อยู่ในเนื้อฟังก์ชันจึงอาจถูกอ่านเป็นข้อมูลหรือทำให้การแปลงหยุดลง

ทำไมตัวเลขจากไฟล์ CSV จึงออกมาในเครื่องหมายคำพูด และ “CREATE TABLE + INSERT” ใช้ชนิดคอลัมน์ใด

ค่าทุกค่าใน CSV ถือเป็นข้อความ ซึ่งช่วยเก็บเลขศูนย์นำหน้าอย่าง 01234 ไว้ได้ แต่ทำให้ 42 กลายเป็น "42" ใน JSON และ '42' ใน SQL และเซลล์ว่างจะกลายเป็นสตริงว่าง ไม่ใช่ null หรือ NULL ชนิดของแต่ละคอลัมน์จะเลือกจากค่าในคอลัมน์นั้น ตารางที่สร้างจาก CSV จึงได้คอลัมน์ชนิดข้อความ คือ VARCHAR(255) หรือ TEXT เมื่อมีค่าที่ยาวเกิน 255 อักขระ (NVARCHAR(255) หรือ NVARCHAR(MAX) สำหรับ SQL Server และ TEXT สำหรับ SQLite) เมื่อข้อมูลเข้าเป็น JSON หรือ YAML และทุกค่าในคอลัมน์เป็นตัวเลขที่ไม่มีเครื่องหมายคำพูด หรือทุกค่าเป็น true หรือ false คอลัมน์นั้นจะได้ชนิดตัวเลขหรือบูลีนแทน ได้แก่ ชนิดจำนวนเต็ม (INT, INTEGER หรือ BIGINT ขึ้นอยู่กับฐานข้อมูลและขนาดของตัวเลข) ชนิดทศนิยมแบบ floating-point สำหรับเลขทศนิยม หรือ BOOLEAN (BIT สำหรับ SQL Server และ INTEGER สำหรับ SQLite) คำสั่งที่ได้ไม่มี primary key ดัชนี หรือข้อจำกัด NOT NULL หากตารางของคุณต้องการสิ่งเหล่านี้ ให้เพิ่มก่อนรันคำสั่ง