← speedor.net

ตัวแปลงข้อมูล

ตัวแปลงรูปแบบข้อมูลฟรี: CSV ↔ JSON, JSON ↔ YAML และ JSON ↔ XML ทันที เป็นส่วนตัว ในเบราว์เซอร์ของคุณ

ข้อมูลแทบไม่เคยอยู่นิ่งในรูปแบบเดียว รายงานมาเป็น spreadsheet API ต้องการ JSON pipeline การ deploy คาด YAML และที่ไหนสักแห่งในชั้นใต้ดิน legacy service ยังคุยกันเป็น XML ความขัดแย้งในการทำงานกับข้อมูลส่วนใหญ่ไม่ใช่ตัวข้อมูลเอง แต่คือการนำมันจากรูปทรงที่มีไปสู่รูปทรงที่บางอย่างต้องการ นั่นคือหน้าที่ทั้งหมดของตัวแปลงข้อมูล: รับข้อความที่มีโครงสร้างในสัญลักษณ์หนึ่งและส่งออกในอีกสัญลักษณ์หนึ่ง โดยไม่สูญเสียความหมาย

ย้ายข้อมูลระหว่าง CSV, JSON, YAML และ XML

ข้อมูลแทบไม่เคยอยู่นิ่งในรูปแบบเดียว รายงานมาเป็น spreadsheet API ต้องการ JSON pipeline การ deploy คาด YAML และที่ไหนสักแห่งในชั้นใต้ดิน legacy service ยังคุยกันเป็น XML ความขัดแย้งในการทำงานกับข้อมูลส่วนใหญ่ไม่ใช่ตัวข้อมูลเอง แต่คือการนำมันจากรูปทรงที่มีไปสู่รูปทรงที่บางอย่างต้องการ นั่นคือหน้าที่ทั้งหมดของตัวแปลงข้อมูล: รับข้อความที่มีโครงสร้างในสัญลักษณ์หนึ่งและส่งออกในอีกสัญลักษณ์หนึ่ง โดยไม่สูญเสียความหมาย

ตัวแปลงของ Speedor ทำงานทั้งหมดในเบราว์เซอร์ของคุณ คุณวาง คลิก และคัดลอกผลลัพธ์ ไม่มีการอัปโหลด ไม่มีการบันทึก และไม่มีอะไรออกจากเครื่องของคุณ สำหรับใครก็ตามที่เคยลังเลก่อนวาง customer export ลงในเว็บไซต์สุ่ม การออกแบบที่ทำงานในเครื่องเท่านั้นนั้นคือประเด็นสำคัญ

แต่ละรูปแบบเก่งในอะไรจริงๆ

มันช่วยให้รู้ว่าทำไมรูปแบบเหล่านี้ถึงมีอยู่ก่อนที่จะเริ่มสลับกัน เพราะแต่ละตัวถูกสร้างสำหรับงานที่ต่างกัน

CSV คือกริดแบบ flat ที่คั่นด้วยจุลภาคที่ spreadsheet ชอบ มันเป็น tabular โดยธรรมชาติ: แถวและคอลัมน์ ไม่มีการซ้อน เปิดใน Excel, Google Sheets หรือ Numbers แล้วมันทำงานได้เลย ข้อด้อยคือ CSV ไม่มีแนวคิดเกี่ยวกับ type ค่า 007 อาจเป็น string ตัวเลข หรือรหัสไปรษณีย์ และ CSV จะไม่บอกคุณ

JSON คือภาษากลางของเว็บสมัยใหม่ เกือบทุก API ที่คุณจะเรียกคุยกันด้วย JSON รองรับการซ้อน arrays และ type จริงจำนวนหนึ่ง (strings, numbers, booleans, null) ทำให้มันแสดงออกได้มากกว่า flat table มาก มันกระทัดรัด เป็นมิตรกับเครื่อง และรองรับได้ทุกที่

YAML คือลูกพี่ลูกน้องที่อ่านได้ง่ายกว่าของ JSON ใช้การย่อหน้าแทนวงเล็บ รองรับ comment และมักเป็นรูปแบบที่เลือกสำหรับไฟล์ config, Docker Compose, Kubernetes manifest และ CI pipeline เมื่อมนุษย์ต้องแก้ไขด้วยมือ YAML มักอ่อนโยนกว่ากับสายตา

XML คือผู้อาวุโส Verbose มี tag หนัก และยังฝังลึกอยู่ใน enterprise system, SOAP service, financial messaging และมาตรฐานเอกสารเช่น RSS คุณจะเจอมันน้อยลงในโปรเจกต์ใหม่ แต่เมื่อคุณต้องการมันจริงๆ มันจำเป็นจริงๆ

บล็อกข้อมูลเรืองแสงนามธรรมที่แปลงจากรูปทรงหนึ่งเป็นอีกรูปทรงในสีน้ำเงินเข้มและสีฟ้า
ข้อมูลเดียวกัน แสดงออกใหม่: โครงสร้างหนึ่งไหลเป็นอีกโครงสร้างโดยไม่สูญเสียความหมาย

การแปลงเกิดขึ้นจริงที่ไหน

สถานการณ์ค่อนข้างชัดเจนเมื่อเริ่มมองดู สมมติว่าฝ่ายการตลาดส่ง spreadsheet ของผู้ติดต่อ 4,000 คนให้คุณและ signup API รับได้เฉพาะ JSON array เท่านั้น คุณ export sheet เป็น CSV รันผ่าน แปลง CSV เป็น JSON และคุณก็มี payload พร้อม POST โดยไม่ต้องมี script กาว ไม่ต้องใช้ pandas ไม่ต้องรอวิศวกร

หรือคุณดึง JSON กลับมาจาก API เดียวกันนั้นและต้องการวางลงในไฟล์ config ที่ service ของคุณอ่านตอน startup แปลงด้วย แปลง JSON เป็น YAML และคุณจะได้สิ่งที่สะอาดและ comment ได้ที่เข้ากับ repo ของคุณได้ การไปในทิศทางอื่นก็ทำงานได้เมื่อเครื่องมือรับได้เฉพาะ JSON แต่ config ของคุณอยู่ใน YAML

และมี integration ที่ไม่มีใครชอบ: ระบบ partner ที่รับได้เฉพาะ XML คุณสร้าง payload ใน JSON เพราะแอปของคุณคิดแบบนั้น แล้วแปลงเป็น XML ที่ขอบเขต รูปร่างเหมือนกัน มีแค่ syntax ที่เปลี่ยน

ข้อควรระวังที่ควรรู้

การแปลงรูปแบบไม่เสมอ lossless และการแกล้งทำเป็นว่าเป็นเช่นนั้นนำไปสู่ bug มีบางสิ่งที่ควรจำไว้:

CSV ลืม type เพราะทุก cell เป็นแค่ข้อความ ตัวเลข บูลีน และวันที่ล้วนออกมาเป็น string ยกเว้น converter จะเดาให้ หาก true ต้องเป็น boolean ไม่ใช่คำว่า "true" ตรวจสอบ output ก่อน ship

YAML สนใจ whitespace การย่อหน้าไม่ใช่แค่รูปลักษณ์ใน YAML มันเป็นโครงสร้าง ช่องว่างที่หลงมาหนึ่งตัวสามารถเปลี่ยนว่า key ไหนที่ value เป็นของ และ tab เป็นสิ่งต้องห้ามโดยสิ้นเชิง หลัง JSON เป็น YAML round-trip ใดๆ ก็ตาม ควรผ่านตาอย่างรวดเร็ว หรือรันผลลัพธ์กลับผ่าน ตัวจัดรูปแบบ JSON เพื่อยืนยันว่าโครงสร้างรอดมา

XML และ JSON ไม่ map กันอย่างสะอาด JSON มี arrays, XML มี element ซ้ำ JSON ไม่มี attribute ที่ไหนเลย, XML มีทุกที่ Converter ส่วนใหญ่เลือก convention ที่สมเหตุสมผล แต่ถ้า XML ของคุณใช้ attribute มาก JSON ที่สร้างออกมาจะดูแตกต่างจาก JSON ที่เขียนด้วยมือเล็กน้อย นั่นเป็นเรื่องปกติไม่ใช่ข้อผิดพลาด

ความลึกของการซ้อนสำคัญ CSV เป็น flat ดังนั้น JSON ที่ซ้อนลึกมักไม่สามารถยุบเป็นคอลัมน์ได้โดยไม่ flatten key (ลองนึกถึง address.city) ในทางกลับกัน CSV แบบ flat กลายเป็น array แบบ flat ไม่ใช่ tree

แถวของตารางข้อมูลเรืองแสงที่แปลงเป็น tree ซ้อนของวงเล็บในสีน้ำเงิน ฟ้า และทอง
แถว flat คลี่ออกเป็น tree ซ้อน: บันทึกเดียวกัน รูปทรงที่สมบูรณ์ยิ่งขึ้น

ทำไมการทำงานในเครื่องเท่านั้นจึงสำคัญที่นี่

ข้อมูลจำนวนมากที่คุณต้องการแปลงไม่ใช่ข้อมูลของคุณที่จะแชร์ บันทึกผู้ใช้ config ภายใน API key ที่ฝังอยู่ใน response แถวทางการเงิน ตัวแปลงออนไลน์หลายตัวส่ง paste ของคุณไปยังเซิร์ฟเวอร์อย่างเงียบๆ เพื่อทำงาน Speedor ไม่ทำ logic การแปลงทำงานในแท็บเบราว์เซอร์ของคุณ ข้อมูลไม่ข้ามเครือข่าย และการปิดแท็บคือการล้างข้อมูลทั้งหมดที่มี มันก็เร็วกว่าด้วย เนื่องจากไม่มีการ upload round-trip และทำงานได้แบบออฟไลน์เมื่อหน้าโหลดแล้ว ฟรี ไม่ต้องสมัครสมาชิก ไม่มีโควตา

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

ข้อมูลของฉันถูกอัปโหลดไปที่ไหนหรือไม่เมื่อแปลง?

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

ฉันสามารถแปลง CSV เป็น JSON ได้โดยไม่ต้องเขียนโค้ดหรือไม่?

ได้ วาง CSV ของคุณลงในตัวแปลง คลิกแปลง และคัดลอก JSON array ที่ได้ แถวแรกจะถูกใช้เป็น header ของคอลัมน์ซึ่งกลายเป็น key สำหรับแต่ละ object

ทำไม JSON ที่แปลงแล้วถึงแสดงตัวเลขเป็น string?

CSV ไม่มีแนวคิดเกี่ยวกับ data type ดังนั้นทุก value เริ่มต้นเป็นข้อความ บาง converter พยายามตรวจจับตัวเลขและบูลีนโดยอัตโนมัติ แต่เมื่อสงสัยจะเก็บ value เป็น string เพื่อหลีกเลี่ยงการทำลายสิ่งต่างๆ เช่น รหัสไปรษณีย์หรือ ID ที่มีศูนย์นำหน้า

ความแตกต่างระหว่าง JSON และ YAML คืออะไร?

ทั้งสองแทนข้อมูลประเภทเดียวกัน แต่ YAML ใช้การย่อหน้าแทนวงเล็บ รองรับ comment และโดยทั่วไปอ่านและแก้ไขได้ง่ายกว่าสำหรับคน JSON กระทัดรัดกว่าและเป็น default สำหรับ web API ส่วนใหญ่

การแปลงระหว่างรูปแบบเหล่านี้ lossless เสมอหรือไม่?

โดยปกติ แต่ไม่เสมอ JSON, YAML และ XML map กันได้ดีในกรณีส่วนใหญ่ คู่ที่ยุ่งยากที่สุดคือ CSV ซึ่งเป็น flat และไม่มี type และ XML ซึ่งจัดการ attribute และ element ซ้ำต่างจาก JSON array ตรวจสอบ output เสมอสำหรับข้อมูลสำคัญ

ตัวแปลงเหล่านี้ทำงานกับไฟล์ขนาดใหญ่ได้หรือไม่?

จัดการไฟล์ทั่วไปส่วนใหญ่ได้สบายเพราะงานเกิดขึ้นบนเครื่องของคุณเอง ประสิทธิภาพขึ้นอยู่กับอุปกรณ์ของคุณแทนที่จะเป็นเซิร์ฟเวอร์ ดังนั้นไฟล์ขนาดใหญ่มากจะถูกจำกัดโดย memory ของเบราว์เซอร์เป็นหลัก