JSON เป็น Excel: เปลี่ยนข้อมูลซ้อนกันเป็นตารางแบน
เครื่องมือแปลงไฟล์ JSON เป็น Excel (XLSX) นี้ทำงานบนเบราว์เซอร์ล้วน ๆ โดยไม่ต้องอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ คุณเลือกไฟล์ JSON ได้ครั้งละหนึ่งไฟล์เท่านั้น ระบบจะแปลงข้อมูลที่ซ้อนกันเป็นตารางแบนราบ จากนั้นแสดงตัวอย่างพร้อมให้ดาวน์โหลดเป็นไฟล์ XLSX
อะไรที่ทำให้หน้านี้แตกต่าง
ความแตกต่างสำคัญคือ JSON มีชนิดข้อมูลและลำดับชั้น ส่วนสเปรดชีตแบบแบนไม่สามารถแสดงลำดับชั้นนั้นได้โดยตรง ตัวแปลงจึงใช้กฎการแบนโดยสร้างชื่อคอลัมน์แบบจุด (dot‑path) เช่น address.city สำหรับคีย์ที่ซ้อนกัน ซึ่งเป็นขั้นตอนที่ไม่จำเป็นเมื่อแปลงจาก CSV หรือ Excel เพราะทั้งสองเป็น flat อยู่แล้ว
ไฟล์ XLSX (Zipped XML workbook) สามารถเก็บชนิดข้อมูลตัวเลข (number) และบูลีน (boolean) ได้โดยตรง ในขณะที่ CSV แปลงทุกอย่างเป็นข้อความ ถึงกระนั้นเครื่องมือนี้ไม่รักษาสูตรคำนวณหรือรูปแบบเซลล์ใด ๆ เขียนเฉพาะข้อมูลคงที่จาก JSON ต้นทางเท่านั้น
ข้อมูลเข้าและข้อมูลออก
- ข้อมูลเข้า: ไฟล์ JSON ไฟล์เดียว (ครั้งละไฟล์) ต้องเป็น "รูปตาราง" หมายถึงต้องเป็นอาร์เรย์ของออบเจ็กต์ หรืออาร์เรย์ของอาร์เรย์
- ข้อมูลออก: ไฟล์ XLSX หนึ่งแผ่นงาน (worksheet) พร้อมตัวอย่างตาราง แสดงจำนวนแถวและคอลัมน์ ขนาดไฟล์ที่สร้าง
กฎและกรณีขอบ
- อาร์เรย์ของออบเจ็กต์: แต่ละออบเจ็กต์กลายเป็นหนึ่งแถว คีย์ของออบเจ็กต์กลายเป็นหัวคอลัมน์ คีย์ที่ซ้อนกันถูกแบนด้วยชื่อแบบจุด เช่น
address.city - อาร์เรย์ของอาร์เรย์: จะถูกมองว่าแถวตารางทันที โดยไม่มีหัวคอลัมน์แยก
- มีเพียงแผ่นงานแรกเท่านั้น ไม่มีแผ่นงานหลายแผ่น สูตร หรือการจัดรูปแบบจาก JSON ต้นทาง
- ข้อความข้อผิดพลาดที่อาจพบ:
- “Choose a CSV, JSON or XLSX file.”
- “This file is too large. Use a file under ‹max›.”
- “This JSON is invalid or not table‑shaped.”
- “This file has no table rows.”
- “This conversion is taking too long. Try a smaller file.”
- “Conversion cancelled.”
เครื่องมือไม่คำนวณสูตรหรือคงรูปแบบใด ๆ
ใครควรใช้เครื่องมือนี้
- ผู้ที่มีข้อมูลแบบลำดับชั้นในไฟล์ JSON (เช่น จาก API หรือการตั้งค่า) และต้องการวิเคราะห์หรือแชร์ในรูปแบบสเปรดชีต
- นักวิเคราะห์ข้อมูลที่ต้องการแบน JSON ที่ซ้อนกันโดยไม่ต้องเขียนโค้ดเอง
- ผู้ที่ต้องการคงชนิดข้อมูลตัวเลขและบูลีนในไฟล์ส่งออก แทนที่จะเปลี่ยนทุกอย่างเป็นข้อความเหมือน CSV
- ทีมงานที่ได้รับไฟล์ JSON และต้องทำงานร่วมกับผู้ใช้ Excel คนอื่น
การแปลง JSON ซ้อนกันเป็นตาราง
สมมติ JSON ต้นทาง:
[
{
"name": "สมชาย",
"age": 30,
"address": {
"city": "กรุงเทพฯ",
"zip": "10100"
},
"active": true
},
{
"name": "สมหญิง",
"age": 25,
"address": {
"city": "เชียงใหม่",
"zip": "50000"
},
"active": false
}
]
ตารางที่ได้จะมีคอลัมน์: name, age, address.city, address.zip, active
ชนิดข้อมูล: name เป็นข้อความ, age เป็นตัวเลข, address.city เป็นข้อความ, address.zip เป็นข้อความ, active เป็นบูลีน (true/false) ซึ่ง XLSX สามารถเก็บได้โดยตรง
ถ้า JSON เป็นอาร์เรย์ของอาร์เรย์ เช่น [[1, "a"], [2, "b"]] จะได้ตารางสองคอลัมน์ ไม่มีหัวคอลัมน์
ข้อจำกัดของตารางแบน
การแบนด้วย dot‑path ทำให้ข้อมูลที่ซ้อนกันลึกหลายชั้นปรากฏเป็นคอลัมน์จำนวนมาก หาก JSON มีอาร์เรย์ย่อยหลายค่า (เช่น tags: ["A","B"]) จะไม่สามารถแบนเป็นตารางเดี่ยวได้โดยตรงเพราะอาร์เรย์ย่อยไม่ใช่คอลัมน์ แต่เครื่องมือจะจัดการเฉพาะอาร์เรย์ระดับบนสุดที่เป็นรูปตารางเท่านั้น
สำหรับค่า null หรือฟิลด์ที่หายไป เครื่องมือจะปล่อยให้เซลล์ว่างใน Excel
คำถามที่พบบ่อย
ถาม: ไฟล์ JSON ที่มีอาร์เรย์ซ้อนอยู่ภายในออบเจ็กต์ จะถูกแปลงอย่างไร? ตอบ: ถ้าคีย์มีค่าเป็นอาร์เรย์ของออบเจ็กต์ อาร์เรย์นั้นจะไม่ถูกขยายเป็นแถวแยกต่างหาก แต่จะถูกแปลงเป็นสตริง JSON ทั้งหมดและวางไว้ในเซลล์เดียว
ถาม: ทำไมขนาดไฟล์ XLSX ถึงเล็กลงเมื่อเทียบกับ JSON? ตอบ: JSON เป็นข้อความล้วน ขณะที่ XLSX บีบอัดแบบ zip ภายใน ซึ่งช่วยลดขนาด โดยเฉพาะเมื่อมีข้อมูลซ้ำกันมาก
ถาม: ใช้กับไฟล์หลายพันแถวได้ไหม? ตอบ: เครื่องมือนี้จำกัดที่ 10,000 แถว หากเกินขีดจำกัดจะแสดงข้อความ “ตารางนี้มีแถวมากกว่า {max} แถว”
ถาม: จะแก้ไข JSON ที่ไม่ใช่รูปตารางอย่างไรให้ใช้เครื่องมือนี้ได้? ตอบ: ต้องแน่ใจว่า JSON root เป็นอาร์เรย์ที่สมาชิกแต่ละตัวมีโครงสร้างสม่ำเสมอ ถ้ามีออบเจ็กต์ซ้อนกัน ให้เขียนสคริปต์แบน JSON ด้วยตนเอง หรือใช้เครื่องมืออื่นแปลงให้เป็นอาร์เรย์ของออบเจ็กต์ก่อน
ถาม: การแปลงนี้ปลอดภัยหรือไม่? ตอบ: ปลอดภัย เพราะการทำงานทั้งหมดเกิดขึ้นในเบราว์เซอร์ ไม่มีการอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์
ถาม: export ออกมาแล้วมีคอลัมน์ที่ชื่อยาวมาก เกิดจากอะไร?
ตอบ: เกิดจากคีย์ที่ซ้อนกันลึกหลายชั้น เช่น a.b.c.d.e เครื่องมือนี้จำกัดที่ 200 คอลัมน์ หากเกินขีดจำกัดจะแสดงข้อความ “ตารางนี้มีคอลัมน์มากกว่า {max} คอลัมน์” คุณควรจัดโครงสร้าง JSON ให้แบนตั้งแต่ต้น หรือใช้การเลือกเฉพาะคีย์ที่จำเป็นก่อนแปลง