ToolDeck

แปลง JSON เป็น CSV

แปลง JSON array เป็นรูปแบบ CSV

ประมวลผลในเครื่อง · ปลอดภัยในการวางข้อมูลลับ
CSV จะแสดงที่นี่…

การแปลง JSON เป็น CSV คืออะไร?

การแปลง JSON เป็น CSV คือการเปลี่ยนข้อมูลที่มีโครงสร้างจากรูปแบบ JSON ให้เป็นค่าที่คั่นด้วยจุลภาค ซึ่งเป็นรูปแบบตารางที่ spreadsheet ฐานข้อมูล และเครื่องมือวิเคราะห์ข้อมูลรองรับโดยตรง JSON เก็บข้อมูลเป็นออบเจกต์และอาร์เรย์ที่ซ้อนกันโดยไม่มี schema ตายตัว ส่วน CSV เก็บข้อมูลเป็นแถวและคอลัมน์พร้อมแถวส่วนหัวที่กำหนดชื่อฟิลด์ การแปลงนี้คือสะพานเชื่อมข้อมูล API สู่ spreadsheet และฐานข้อมูล

CSV (Comma-Separated Values) ถูกกำหนดโดย RFC 4180 แต่ละบรรทัดคือหนึ่งระเบียน และฟิลด์ภายในบรรทัดถูกคั่นด้วยอักขระตัวคั่น ซึ่งส่วนใหญ่มักเป็นจุลภาค ฟิลด์ที่มีตัวคั่น เครื่องหมายอัญประกาศคู่ หรือการขึ้นบรรทัดใหม่ต้องถูกครอบด้วยเครื่องหมายอัญประกาศคู่ โดยอัญประกาศภายในต้อง escape ด้วยการซ้ำ การ escape นี้เป็นต้นเหตุหลักของบั๊กเมื่อเขียนตัวแปลง JSON เป็น CSV เอง

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

ทำไมต้องแปลง JSON เป็น CSV?

API ส่งข้อมูลกลับมาเป็น JSON แต่ spreadsheet ฐานข้อมูล SQL และเครื่องมือ BI คาดหวังข้อมูลแบบตาราง การแปลง JSON เป็น CSV ช่วยให้คุณเคลื่อนย้ายข้อมูลระหว่างระบบเหล่านี้โดยไม่ต้องเขียนสคริปต์นำเข้าเอง

แปลงได้ทันทีในเบราว์เซอร์
วาง JSON แล้วดาวน์โหลดไฟล์ได้เลย ไม่ต้องอัปโหลดไปยังเซิร์ฟเวอร์ ไม่มีขีดจำกัดขนาดไฟล์จาก API ภายนอก ไม่ต้องรอคิวประมวลผล
🔒
ประมวลผลโดยให้ความเป็นส่วนตัวก่อน
ข้อมูลของคุณอยู่ในเบราว์เซอร์ การแปลงทำงานทั้งหมดใน JavaScript บนอุปกรณ์ของคุณ ข้อมูลส่งออกจากฐานข้อมูล ระเบียนผู้ใช้ และข้อมูลทางการเงินจะไม่ออกจากเครื่องของคุณ
🔀
รองรับตัวคั่นหลายรูปแบบ
เลือกระหว่างจุลภาค เซมิโคลอน แท็บ หรือไปป์เป็นตัวคั่น ใช้เซมิโคลอนสำหรับ spreadsheet ที่ใช้ locale ยุโรป ใช้แท็บสำหรับไฟล์ TSV หรือใช้ไปป์สำหรับการนำเข้าระบบเก่า
📋
ไม่ต้องสร้างบัญชี
เปิดหน้าและแปลงได้เลย ไม่ต้องสมัครสมาชิก ไม่ต้อง API key ไม่ต้องติดตั้ง CLI ใช้งานได้บนอุปกรณ์ใดก็ได้ที่มีเบราว์เซอร์สมัยใหม่

กรณีการใช้งานแปลง JSON เป็น CSV

ส่งออกข้อมูล API สำหรับ Spreadsheet
REST API ส่งข้อมูลกลับมาเป็น JSON ผู้จัดการผลิตภัณฑ์และนักวิเคราะห์ต้องการข้อมูลนั้นใน Excel หรือ Google Sheets แปลงการตอบสนอง API เป็น CSV แล้วเปิดในแอปพลิเคชัน spreadsheet ใดก็ได้
นำเข้าข้อมูลจำนวนมากสู่ฐานข้อมูล
PostgreSQL COPY, MySQL LOAD DATA และ SQLite .import รองรับ CSV ทั้งหมด แปลงชุดข้อมูลเป็นรูปแบบตารางเพื่อนำเข้าจำนวนมากได้รวดเร็วโดยไม่ต้องเขียนสคริปต์นำเข้าเอง
ทดสอบต้นแบบ ETL Pipeline
ETL pipeline มักมีผลลัพธ์ระหว่างกลางที่ยากต่อการตรวจสอบในรูปแบบ JSON ดิบ แปลงผลลัพธ์ของแต่ละขั้นตอนเป็น CSV แล้วเปิดใน spreadsheet เพื่อตรวจสอบการแปลงข้อมูลก่อนเชื่อมต่อ pipeline ทั้งหมด
เตรียมข้อมูลทดสอบสำหรับ QA
วิศวกร QA สร้าง test fixture เป็น JSON แต่เฟรมเวิร์กการทดสอบและเครื่องมือ data-driven testing หลายตัวรับ CSV สำหรับอินพุตการทดสอบแบบ parameterized แปลง fixture เป็น CSV โดยไม่ต้องจัดรูปแบบใหม่ด้วยมือ
วิเคราะห์ Log และสร้างรายงาน
JSON log ที่มีโครงสร้างจากแอปพลิเคชันและบริการ cloud สามารถแปลงเป็น CSV เพื่อนำเข้าสู่เครื่องมือ BI อย่าง Tableau, Power BI หรือ Looker เพื่อการแสดงผลและรายงาน
ประมวลผลข้อมูลเชิงวิชาการ
นักศึกษาและนักวิจัยที่ทำงานกับ API ข้อมูลเปิดได้รับการตอบสนองเป็น JSON การแปลงเป็น CSV ช่วยให้วิเคราะห์ใน R, pandas, SPSS หรือ Excel ได้โดยไม่ต้องเขียนโค้ดแยกวิเคราะห์

อ้างอิงตัวคั่น CSV

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

ตัวคั่นอักขระนามสกุลไฟล์ใช้เมื่อ
Comma,.csvDefault for most spreadsheets and databases
Semicolon;.csvStandard in locales where comma is a decimal separator (DE, FR, BR)
Tab\t.tsvAvoids escaping when field values contain commas or semicolons
Pipe|.csvUsed in fixed-width legacy systems and some ETL pipelines

การจัดการ JSON ที่ซ้อนกันใน CSV

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

การแผ่ข้อมูลด้วย Dot-Notation
key ที่ซ้อนกันถูกรวมด้วยจุด: {"address": {"city": "กรุงเทพฯ"}} กลายเป็นคอลัมน์ชื่อ address.city พร้อมค่า กรุงเทพฯ วิธีนี้เป็นที่นิยมมากที่สุดและทำงานได้ดีกับเครื่องมือที่รองรับการอ้างอิงฟิลด์แบบซ้อนกัน
คอลัมน์ตามลำดับดัชนีอาร์เรย์
อาร์เรย์ถูกขยายออกเป็นคอลัมน์ที่มีหมายเลข: {"tags": ["a", "b"]}' กลายเป็น tags.0 = a, tags.1 = b วิธีนี้รักษาค่าทั้งหมดแต่สร้างคอลัมน์จำนวนมากเมื่ออาร์เรย์มีขนาดใหญ่
การแทนด้วยสตริง JSON
ค่าที่ซ้อนกันซับซ้อนถูก serialize เป็นสตริง JSON ภายในเซลล์ CSV โดยเซลล์มีข้อความ JSON ดิบ วิธีนี้รักษาโครงสร้างทั้งหมดแต่ผู้บริโภคต้องแยกวิเคราะห์ค่าในเซลล์
ละเว้นฟิลด์ที่ซ้อนกัน
ตัวแปลงบางตัวตัดออบเจกต์และอาร์เรย์ที่ซ้อนกันออกทั้งหมด เก็บเฉพาะฟิลด์ scalar (สตริง ตัวเลข บูลีน null) ซึ่งสร้าง CSV ที่สะอาดแต่สูญเสียข้อมูล ใช้ได้เฉพาะเมื่อรู้ว่าฟิลด์ที่ซ้อนกันไม่จำเป็น

ตัวอย่างโค้ด

การแปลง JSON เป็น CSV ด้วยโปรแกรมต้องจัดการการดึงส่วนหัว การครอบฟิลด์ด้วยอัญประกาศ และการ escape ตัวคั่น ภาษาส่วนใหญ่มีการรองรับในตัวหรือใน standard library สำหรับการเขียน CSV

JavaScript (Node.js)
const data = [
  { name: "Alice", age: 30, city: "Berlin" },
  { name: "Bob", age: 25, city: "Tokyo" },
]

// Extract headers from the first object
const headers = Object.keys(data[0])
const csv = [
  headers.join(","),
  ...data.map(row => headers.map(h => {
    const val = String(row[h] ?? "")
    // Quote fields that contain commas, quotes, or newlines
    return val.includes(",") || val.includes('"') || val.includes("\n")
      ? '"' + val.replace(/"/g, '""') + '"'
      : val
  }).join(","))
].join("\n")

console.log(csv)
// → name,age,city
// → Alice,30,Berlin
// → Bob,25,Tokyo
Python
import json, csv, io

json_str = '[{"name":"Alice","age":30,"city":"Berlin"},{"name":"Bob","age":25,"city":"Tokyo"}]'
data = json.loads(json_str)

output = io.StringIO()
writer = csv.DictWriter(output, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)

print(output.getvalue())
# → name,age,city
# → Alice,30,Berlin
# → Bob,25,Tokyo
CLI (jq + Miller)
# Using jq to convert JSON array to CSV
echo '[{"name":"Alice","age":30},{"name":"Bob","age":25}]' | \
  jq -r '(.[0] | keys_unsorted) as $k | $k, (.[] | [.[$k[]]] ) | @csv'
# → "name","age"
# → "Alice",30
# → "Bob",25

# Using Miller (mlr) for streaming conversion
echo '[{"name":"Alice","age":30}]' | mlr --json --ocsv cat
# → name,age
# → Alice,30
Go
package main

import (
    "encoding/csv"
    "encoding/json"
    "fmt"
    "os"
)

func main() {
    jsonStr := `[{"name":"Alice","age":30},{"name":"Bob","age":25}]`
    var data []map[string]interface{}
    json.Unmarshal([]byte(jsonStr), &data)

    w := csv.NewWriter(os.Stdout)
    // Write header
    headers := []string{"name", "age"}
    w.Write(headers)
    // Write rows
    for _, row := range data {
        record := make([]string, len(headers))
        for i, h := range headers {
            record[i] = fmt.Sprintf("%v", row[h])
        }
        w.Write(record)
    }
    w.Flush()
    // → name,age
    // → Alice,30
    // → Bob,25
}

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

ตัวแปลงนี้คาดหวังโครงสร้าง JSON แบบใด?
ตัวแปลงคาดหวัง JSON array ของออบเจกต์ เช่น [{"name":"สมชาย"},{"name":"สมหญิง"}] แต่ละออบเจกต์ใน array กลายเป็นหนึ่งแถวในผลลัพธ์ และ key ของออบเจกต์กลายเป็นส่วนหัวของคอลัมน์ JSON object เดี่ยว (ที่ไม่ได้อยู่ใน array) ถูกมองว่าเป็นตารางหนึ่งแถว
ออบเจกต์และอาร์เรย์ที่ซ้อนกันถูกจัดการอย่างไร?
ค่าที่ซ้อนกันถูกแผ่ออกโดยใช้ dot notation ตัวอย่างเช่น {"address":{"city":"กรุงเทพฯ"}'} สร้างคอลัมน์ชื่อ address.city อาร์เรย์ถูกขยายออกเป็นคอลัมน์ที่มีดัชนี (tags.0, tags.1) ซึ่งรักษาข้อมูลไว้ในขณะที่ผลลัพธ์ยังคงแบน
จะเกิดอะไรขึ้นเมื่อออบเจกต์มี key ต่างกัน?
ตัวแปลงรวบรวม key ที่ไม่ซ้ำกันทั้งหมดจากออบเจกต์ทุกตัวใน array และใช้เป็นส่วนหัวของคอลัมน์ ออบเจกต์ที่ขาด key หนึ่งจะมีเซลล์ว่างสำหรับคอลัมน์นั้น ไม่มีข้อมูลสูญหาย และลำดับคอลัมน์ตามลำดับที่ key ปรากฏครั้งแรก
สามารถใช้เซมิโคลอนหรือแท็บแทนจุลภาคได้ไหม?
ได้ เครื่องมือนี้รองรับตัวคั่นแบบจุลภาค เซมิโคลอน แท็บ และไปป์ ใช้เซมิโคลอนเมื่อข้อมูลหรือ locale ของคุณใช้จุลภาคเป็นตัวคั่นทศนิยม (พบมากในกรณี spreadsheet ภาษาเยอรมัน ฝรั่งเศส และบราซิล) ใช้แท็บสำหรับไฟล์ TSV ที่ใช้กับเครื่องมือ Unix
การแปลงสูญเสียข้อมูลไหม?
สำหรับ JSON array แบบแบนที่มีค่า scalar สม่ำเสมอ ไม่สูญเสีย ไฟล์ผลลัพธ์มีข้อมูลเหมือนกันและสามารถแปลงกลับเป็น JSON ที่เหมือนกันได้ สำหรับโครงสร้างที่ซ้อนกัน การแผ่ข้อมูลจะเปลี่ยนรูปร่างของข้อมูล ค่า array ที่ serialize เป็นคอลัมน์ที่มีดัชนีหรือสตริง JSON สามารถสร้างใหม่ได้ แต่การแปลงกลับต้องรู้โครงสร้างเดิม
ไฟล์ JSON ขนาดใหญ่แค่ไหนที่สามารถแปลงได้?
เครื่องมือทำงานในเบราว์เซอร์และประมวลผลข้อมูลในหน่วยความจำ ไฟล์ขนาดถึง 10–20 MB แปลงได้ไม่มีปัญหาบนอุปกรณ์สมัยใหม่ สำหรับไฟล์ที่ใหญ่กว่านั้น ให้ใช้เครื่องมือ CLI อย่าง jq, Miller หรือสคริปต์ Python ที่ใช้โมดูล csv ซึ่งประมวลผลข้อมูลแบบ stream
ปลอดภัยที่จะวางข้อมูลที่ละเอียดอ่อนลงในเครื่องมือนี้ไหม?
ปลอดภัย การประมวลผลทั้งหมดเกิดขึ้นในเบราว์เซอร์โดยใช้ JavaScript ไม่มีการส่งข้อมูลไปยังเซิร์ฟเวอร์ใด คุณสามารถยืนยันได้โดยเปิด developer tools ของเบราว์เซอร์และตรวจสอบแท็บ Network ระหว่างการแปลง