ToolDeck

แปลง CSV เป็น JSON

แปลงข้อมูล CSV เป็นรูปแบบ JSON array หรือ object

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

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

CSV (Comma-Separated Values) คือรูปแบบตารางข้อความธรรมดาที่แต่ละบรรทัดคือระเบียนข้อมูลหนึ่งแถว และฟิลด์ภายในแต่ละระเบียนจะแยกกันด้วยตัวคั่น โดยทั่วไปคือเครื่องหมายจุลภาค CSV ถูกใช้เป็นรูปแบบการแลกเปลี่ยนข้อมูลมาตรฐานตั้งแต่ยุคแรกของคอมพิวเตอร์ส่วนบุคคล ตามข้อกำหนดใน RFC 4180 สเปรดชีต ฐานข้อมูล และเครื่องมือส่งออกข้อมูลต่างๆ ล้วนสร้างไฟล์ CSV เพราะมันเรียบง่าย กะทัดรัด และทุกภาษาโปรแกรมสามารถอ่านได้

JSON (JavaScript Object Notation) แสดงข้อมูลที่มีโครงสร้างในรูปแบบคู่คีย์-ค่าและอาเรย์ที่เรียงลำดับ ต่างจาก CSV ตรงที่ JSON รองรับอ็อบเจ็กต์ซ้อนกัน ค่าที่มีประเภท (ตัวเลข บูลีน null) และระเบียนที่มีความยาวต่างกันได้ เนื่องจาก JavaScript engine เข้าใจ JSON โดยตรง มันจึงกลายเป็นรูปแบบหลักสำหรับการแลกเปลี่ยนข้อมูลระหว่างเบราว์เซอร์กับเซิร์ฟเวอร์ และการตอบสนองของ REST API คุณสมบัติเหล่านี้ทำให้ JSON เป็นรูปแบบมาตรฐานสำหรับ web API ไฟล์คอนฟิก และฐานข้อมูล NoSQL อย่าง MongoDB และ CouchDB

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

ทำไมต้องใช้เครื่องมือนี้?

ตัวแปลงนี้ประมวลผล CSV ในเบราว์เซอร์ของคุณ สร้างเอาต์พุต JSON ได้ทันที และไม่ส่งข้อมูลของคุณไปยังเซิร์ฟเวอร์ใดๆ

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

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

การพัฒนา Frontend
แปลงไฟล์ CSV ที่ส่งออกจากเครื่องมือออกแบบหรือสเปรดชีตเป็น JSON เพื่อใช้เป็นข้อมูลจำลองสำหรับคอมโพเนนต์ React, Vue หรือ Angular ในช่วงสร้างต้นแบบ
การเติมข้อมูล Backend API
แปลงไฟล์ดัมป์ฐานข้อมูล CSV เป็น JSON payload สำหรับเติมข้อมูลใน REST หรือ GraphQL API ORM และเครื่องมือ migration หลายตัวรับไฟล์ JSON fixtures สำหรับการโหลดข้อมูลเริ่มต้น
การตั้งค่า DevOps
แปลงรายการอินเวนทอรี CSV หรือเมทริกซ์สภาพแวดล้อมเป็น JSON สำหรับใช้ใน Ansible playbook ไฟล์ตัวแปร Terraform หรือการตั้งค่า CI/CD pipeline
การเตรียมข้อมูลทดสอบ QA
แปลงเมทริกซ์การทดสอบในสเปรดชีตเป็น JSON array ที่ test framework อย่าง Jest, pytest หรือ Playwright ใช้ทดสอบแบบขับเคลื่อนด้วยข้อมูลได้
Data Engineering Pipeline
แปลงเอาต์พุต CSV จาก SQL query หรือการส่งออก ETL เป็น JSON สำหรับโหลดลง document store อย่าง MongoDB, Elasticsearch หรือโหมดนำเข้า JSON ของ BigQuery
โครงงานนักศึกษาและการเรียนรู้
แปลงชุดข้อมูล CSV ตัวอย่าง (Kaggle, พอร์ทัลข้อมูลเปิดของรัฐบาล) เป็น JSON สำหรับใช้ในงานคอร์ส web development บทช่วยสอน หรือโครงการส่วนตัว

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

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

ตัวคั่นมาตรฐานนามสกุลไฟล์หมายเหตุ
Comma (,)RFC 4180 default.csvMost common; Excel default export
Tab (\t)TSV variant.tsvAvoids quoting fields that contain commas
Semicolon (;)European locale CSV.csvUsed where comma is the decimal separator (DE, FR, BR)
Pipe (|)Fixed-width alternative.csvRare in field values, good for messy data

CSV vs JSON: ความแตกต่างทางโครงสร้าง

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

CSV
รูปแบบแบนเรียงตามแถว ทุกระเบียนมีจำนวนฟิลด์เท่ากัน ค่าทั้งหมดเป็นสตริงหากผู้ใช้ไม่อนุมานประเภทเอง ไม่รองรับการซ้อนกันหรือระเบียนที่มีความยาวต่างกัน แถวหัวคอลัมน์เป็นตัวเลือกตาม RFC 4180 แต่จำเป็นสำหรับการแปลง JSON ที่มีความหมาย
JSON
รูปแบบโครงสร้างต้นไม้ที่อธิบายตัวเองได้ แต่ละอ็อบเจ็กต์มีคีย์ต่างกันได้ ค่ามีประเภท: string, number, boolean, null, object หรือ array รองรับการซ้อนกันได้ลึกตามต้องการ ลำดับ property ไม่ได้รับประกันโดยข้อกำหนด JSON (ECMA-404) แม้ว่า parser ส่วนใหญ่จะรักษาลำดับการแทรกไว้

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

วิธีแปลง CSV เป็น JSON ด้วยโปรแกรมในภาษาและเครื่องมือ CLI ยอดนิยม:

JavaScript (browser / Node.js)
// Simple CSV string → JSON array
const csv = `name,age,city
Alice,30,Berlin
Bob,25,Tokyo`

const [headerLine, ...rows] = csv.trim().split('\n')
const headers = headerLine.split(',')
const json = rows.map(row => {
  const values = row.split(',')
  return Object.fromEntries(headers.map((h, i) => [h, values[i]]))
})
// → [{ name: "Alice", age: "30", city: "Berlin" }, ...]

// With the built-in fetch + a library (Papa Parse)
import Papa from 'papaparse'
const result = Papa.parse(csvString, { header: true, dynamicTyping: true })
console.log(result.data) // typed numbers and booleans
Python
import csv, json, io

csv_string = """name,age,city
Alice,30,Berlin
Bob,25,Tokyo"""

reader = csv.DictReader(io.StringIO(csv_string))
data = [row for row in reader]
print(json.dumps(data, indent=2))
# → [{"name": "Alice", "age": "30", "city": "Berlin"}, ...]

# With type coercion (age as int)
import pandas as pd
df = pd.read_csv(io.StringIO(csv_string))
print(df.to_json(orient="records", indent=2))
# → [{"name": "Alice", "age": 30, "city": "Berlin"}, ...]
Go
package main

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

func main() {
	input := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
	r := csv.NewReader(strings.NewReader(input))
	records, _ := r.ReadAll()

	headers := records[0]
	var result []map[string]string
	for _, row := range records[1:] {
		obj := make(map[string]string)
		for i, h := range headers {
			obj[h] = row[i]
		}
		result = append(result, obj)
	}

	out, _ := json.MarshalIndent(result, "", "  ")
	fmt.Println(string(out))
	// → [{"age":"30","city":"Berlin","name":"Alice"}, ...]
}
CLI (jq + Miller)
# Using Miller (mlr) — handles quoting, types, and edge cases
mlr --icsv --ojson cat data.csv
# → [{"name": "Alice", "age": 30, "city": "Berlin"}, ...]

# Using csvjson from csvkit (Python-based)
csvjson data.csv

# Using jq with @csv (reverse: JSON → CSV)
# For CSV → JSON, pipe through Miller or Python
cat data.csv | python3 -c "
import csv, json, sys
reader = csv.DictReader(sys.stdin)
json.dump(list(reader), sys.stdout, indent=2)
"

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

ตัวแปลงจัดการไฟล์ CSV ที่ไม่มีแถวหัวคอลัมน์อย่างไร?
หาก CSV ของคุณไม่มีแถวหัวคอลัมน์ ตัวแปลงจะใช้คีย์ที่สร้างอัตโนมัติ เช่น "field1", "field2" เป็นต้น เพื่อผลลัพธ์ที่ดีที่สุด ให้เพิ่มแถวหัวคอลัมน์ก่อนแปลง หรือเปลี่ยนชื่อคีย์ใน JSON เอาต์พุตหลังจากนั้น
จะเกิดอะไรขึ้นกับฟิลด์ที่อยู่ในเครื่องหมายคำพูดซึ่งมีจุลภาคหรือบรรทัดใหม่อยู่ภายใน?
ตัวแยกวิเคราะห์ปฏิบัติตามกฎการใช้เครื่องหมายคำพูดของ RFC 4180 ฟิลด์ที่อยู่ในเครื่องหมายคำพูดคู่สามารถมีจุลภาค บรรทัดใหม่ และแม้แต่เครื่องหมายคำพูดคู่ (escape เป็น "") ตัวแปลงจะลบเครื่องหมายคำพูดด้านนอกออกและเก็บเนื้อหาด้านในเป็น JSON string ค่าเดียว
การแปลงจะเก็บรักษาประเภทข้อมูลอย่างตัวเลขและบูลีนหรือไม่?
CSV เป็นรูปแบบที่ไม่มีประเภท ค่าทุกเซลล์เป็นสตริง ตัวแปลงนี้ส่งออกค่าเป็นสตริงโดยค่าเริ่มต้นเพื่อหลีกเลี่ยงการสูญเสียข้อมูล หากต้องการเอาต์พุตที่มีประเภท ให้แยกวิเคราะห์ผลลัพธ์ JSON ในแอปพลิเคชันของคุณและแปลงฟิลด์อย่างชัดเจน ไลบรารีอย่าง Papa Parse (JavaScript) และ pandas (Python) มีตัวเลือกการกำหนดประเภทแบบไดนามิกระหว่างการแยกวิเคราะห์
ฉันสามารถแปลง CSV ที่ใช้เซมิโคลอนหรือแท็บแทนจุลภาคได้ไหม?
ได้ เครื่องมือรองรับตัวคั่นประเภทจุลภาค แท็บ เซมิโคลอน และไปป์ เลือกตัวคั่นที่ถูกต้องจาก dropdown หรือปล่อยให้ระบบตรวจจับอัตโนมัติ เซมิโคลอนพบบ่อยในไฟล์ CSV ที่ส่งออกจาก Excel ในภาษาท้องถิ่นยุโรป ซึ่งใช้เครื่องหมายจุลภาคเป็นตัวคั่นทศนิยม
มีขีดจำกัดขนาดไฟล์สำหรับ CSV อินพุตหรือไม่?
เนื่องจากการประมวลผลเกิดขึ้นทั้งหมดในเบราว์เซอร์ของคุณ ขีดจำกัดที่ใช้งานได้จริงขึ้นอยู่กับหน่วยความจำที่ว่างของอุปกรณ์ ไฟล์ขนาดถึง 10-20 MB มักแปลงได้โดยไม่มีปัญหาบนฮาร์ดแวร์ทันสมัย สำหรับไฟล์ขนาดใหญ่มาก (หลายร้อย MB) ให้ใช้ตัวแยกวิเคราะห์แบบ streaming อย่าง Papa Parse ใน Node.js หรือโมดูล csv ของ Python ซึ่งประมวลผลข้อมูลทีละแถวโดยไม่โหลดทุกอย่างลงในหน่วยความจำพร้อมกัน
ฉันจัดการแถว CSV ที่มีจำนวนคอลัมน์ต่างกันอย่างไร?
CSV ที่ไม่สม่ำเสมอ (แถวที่มีฟิลด์น้อยกว่าหรือมากกว่าหัวคอลัมน์) พบได้ทั่วไปในการส่งออกข้อมูลจริง ตัวแปลงนี้จะเติมฟิลด์ที่หายไปด้วยสตริงว่างและละเว้นฟิลด์ส่วนเกินที่เกินจำนวนหัวคอลัมน์ หากข้อมูลของคุณไม่สม่ำเสมออย่างสม่ำเสมอ ให้ตรวจสอบไฟล์ต้นฉบับว่ามีตัวคั่นที่ไม่ได้ escape หรือเครื่องหมายคำพูดที่หายไปหรือไม่
ความแตกต่างระหว่างเอาต์พุตแบบ JSON array กับ JSON object คืออะไร?
JSON array ของอ็อบเจ็กต์คือเอาต์พุตมาตรฐาน: แต่ละแถว CSV กลายเป็นหนึ่งอ็อบเจ็กต์ใน array โดยใช้ชื่อหัวคอลัมน์เป็นคีย์ บางเครื่องมือยังเสนอเอาต์พุตแบบ "column-oriented" ซึ่งแต่ละหัวคอลัมน์กลายเป็นคีย์ที่มี array ของค่าทั้งหมดในคอลัมน์นั้น รูปแบบ array-of-objects พบบ่อยกว่าสำหรับ API ฐานข้อมูล และการผูกข้อมูลฝั่ง frontend