ToolDeck

تبدیل CSV به JSON

تبدیل داده‌های CSV به فرمت آرایه یا شیء JSON

به‌صورت محلی اجرا می‌شود · جای‌گذاری اسرار امن است
CSV اینجا نمایش داده می‌شود…

تبدیل CSV به JSON چیست؟

CSV (مقادیر جداشده با کاما) یک فرمت جدولی متن‌ساده است که در آن هر خط یک رکورد داده است و فیلدهای هر رکورد با یک جداکننده — معمولاً کاما — از هم جدا می‌شوند. CSV از روزهای اولیه رایانه‌های شخصی به‌عنوان یک فرمت استاندارد تبادل داده شناخته می‌شود و در RFC 4180 رسمی شده است. صفحه‌گسترده‌ها، پایگاه‌های داده و ابزارهای صادرات داده همگی CSV تولید می‌کنند چون ساده، فشرده و توسط تقریباً هر زبان برنامه‌نویسی قابل خواندن است.

JSON (نماد شیء JavaScript) داده ساختاریافته را به‌صورت جفت‌های کلید-مقدار و آرایه‌های مرتب نمایش می‌دهد. بر خلاف CSV، JSON از اشیاء تودرتو، مقادیر دارای نوع (اعداد، بولین‌ها، null) و رکوردهای با طول متغیر پشتیبانی می‌کند. چون موتورهای JavaScript به‌طور بومی JSON را می‌شناسند، JSON فرمت غالب برای تبادل داده بین مرورگر و سرور و پاسخ‌های REST API است. این ویژگی‌ها JSON را به فرمت پیش‌فرض برای API‌های وب، فایل‌های پیکربندی و پایگاه‌های داده NoSQL مانند MongoDB و CouchDB تبدیل کرده است.

تبدیل CSV به JSON به معنای نگاشت هر سطر جدول به یک شیء JSON است، با استفاده از سطر سرصفحه به‌عنوان نام ویژگی‌ها و مقادیر سلول‌ها به‌عنوان مقادیر ویژگی‌ها. نتیجه معمولاً یک آرایه JSON از اشیاء است. این تبدیل هرگاه نیاز باشد داده‌های جدولی تخت را به سیستمی تزریق کنید که انتظار ورودی JSON ساختاریافته دارد ضروری است — مانند یک REST API، یک کامپوننت جدول داده در فرانت‌اند، یا یک پایگاه داده سندمحور.

چرا از این ابزار استفاده کنیم؟

این مبدل، CSV شما را در مرورگر تجزیه می‌کند، خروجی JSON را فوری می‌سازد و هیچ داده‌ای را به سرور ارسال نمی‌کند.

تبدیل فوری
CSV را بچسبانید و فوری خروجی JSON دریافت کنید. بدون انتظار برای رفت‌وبرگشت به سرور یا آپلود فایل. تبدیل هم‌زمان با تایپ انجام می‌شود.
🔒
پردازش با حفظ حریم خصوصی
داده‌های شما در تب مرورگر شما باقی می‌مانند. هیچ چیزی از طریق شبکه منتقل نمی‌شود. برای مجموعه‌داده‌های داخلی، اطلاعات محرمانه یا داده‌های شخصی که نباید دستگاه شما را ترک کنند امن است.
🔀
تشخیص خودکار جداکننده
ابزار جداکننده‌های کاما، تب، سمی‌کالن و پایپ را تشخیص می‌دهد. اگر فایل شما از جداکننده غیررایجی استفاده می‌کند، می‌توانید جداکننده را به‌صورت دستی تنظیم کنید.
📋
کپی یا دانلود
نتیجه JSON را با یک کلیک در کلیپ‌بورد کپی کنید یا به‌صورت فایل .json دانلود کنید. آماده برای استفاده مستقیم در کد، ابزار API یا وارد کردن در پایگاه داده.

موارد استفاده تبدیل CSV به JSON

توسعه فرانت‌اند
یک صادرات CSV از ابزار طراحی یا صفحه‌گسترده را به JSON تبدیل کنید تا در مرحله نمونه‌سازی به‌عنوان داده آزمایشی برای کامپوننت‌های React، Vue یا Angular استفاده کنید.
بارگذاری اولیه API بک‌اند
پشتیبان‌گیری CSV پایگاه داده را به پیلودهای JSON برای بارگذاری اولیه یک REST یا GraphQL API تبدیل کنید. بسیاری از ORM‌ها و ابزارهای مهاجرت، fixture‌های JSON را برای بارگذاری داده اولیه می‌پذیرند.
پیکربندی DevOps
لیست‌های موجودی CSV یا ماتریس‌های محیطی را به JSON تبدیل کنید تا در playbook‌های Ansible، فایل‌های متغیر Terraform یا پیکربندی‌های CI/CD pipeline استفاده شوند.
آماده‌سازی داده‌های آزمون QA
ماتریس‌های آزمون مبتنی بر صفحه‌گسترده را به آرایه‌های JSON تبدیل کنید تا توسط چارچوب‌های آزمون مانند Jest، pytest یا Playwright برای آزمون داده‌محور مصرف شوند.
پایپ‌لاین‌های مهندسی داده
خروجی CSV از کوئری‌های SQL یا صادرات ETL را به JSON تبدیل کنید تا در مخازن سند مانند MongoDB، Elasticsearch یا حالت وارد کردن JSON در BigQuery بارگذاری شود.
پروژه‌های دانشجویی و یادگیری
مجموعه‌داده‌های CSV نمونه (Kaggle، درگاه‌های داده آزاد دولتی) را به سرعت به JSON تبدیل کنید تا در دوره‌های توسعه وب، آموزش‌ها یا پروژه‌های شخصی استفاده شوند.

راهنمای جداکننده‌های CSV

فایل‌های CSV همیشه از کاما استفاده نمی‌کنند. جداکننده به locale، برنامه صادرکننده و محتوای داده بستگی دارد. در اینجا چهار جداکننده پرکاربرد و موارد معمول استفاده از هر کدام آورده شده است:

جداکنندهاستانداردپسوندیادداشت‌ها
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 در برابر JSON: تفاوت‌های ساختاری

همین تفاوت‌های ساختاری هستند که نگاشت سرصفحه، استنتاج نوع و مدیریت مقادیر غایب را در هنگام تبدیل نیازمند تصمیم‌گیری صریح می‌کنند.

CSV
فرمت تخت، سطرمحور. هر رکورد تعداد فیلد یکسانی دارد. تمام مقادیر رشته هستند مگر اینکه مصرف‌کننده نوع‌ها را استنتاج کند. از تودرتویی یا رکوردهای با طول مختلف پشتیبانی نمی‌کند. سطر سرصفحه طبق RFC 4180 اختیاری است، اما برای تبدیل معنادار به JSON ضروری است.
JSON
فرمت درختی، خودتوصیف‌گر. هر شیء می‌تواند کلیدهای متفاوتی داشته باشد. مقادیر دارای نوع هستند: رشته، عدد، بولین، null، شیء یا آرایه. از تودرتویی با عمق دلخواه پشتیبانی می‌کند. ترتیب ویژگی‌ها توسط مشخصات JSON (ECMA-404) تضمین نشده، اگرچه اکثر تجزیه‌کننده‌ها ترتیب درج را حفظ می‌کنند.

نمونه‌های کد

نحوه تبدیل برنامه‌ای 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 منفرد حفظ می‌کند.
آیا تبدیل انواع داده مانند اعداد و بولین‌ها را حفظ می‌کند؟
CSV یک فرمت بدون نوع است؛ تمام مقادیر سلول رشته هستند. این مبدل به‌طور پیش‌فرض مقادیر رشته‌ای خروجی می‌دهد تا داده‌ای از دست نرود. اگر به خروجی دارای نوع نیاز دارید، نتیجه JSON را در برنامه خود تجزیه کنید و فیلدها را به‌صورت صریح تبدیل نوع کنید. کتابخانه‌هایی مانند Papa Parse (JavaScript) و pandas (Python) گزینه‌های تایپ‌گذاری پویا در هنگام تجزیه ارائه می‌دهند.
آیا می‌توانم CSV با سمی‌کالن یا تب به‌جای کاما تبدیل کنم؟
بله. ابزار از جداکننده‌های کاما، تب، سمی‌کالن و پایپ پشتیبانی می‌کند. جداکننده صحیح را از منوی کشویی انتخاب کنید، یا حالت تشخیص خودکار را فعال بگذارید. سمی‌کالن در صادرات CSV با locale اروپایی از Excel رایج است، جایی که کاما به‌عنوان جداکننده اعشار استفاده می‌شود.
آیا محدودیت اندازه فایل برای ورودی CSV وجود دارد؟
چون پردازش کاملاً در مرورگر شما انجام می‌شود، محدودیت عملی به حافظه در دسترس دستگاه شما بستگی دارد. فایل‌های ۱۰ تا ۲۰ مگابایتی معمولاً روی سخت‌افزار مدرن بدون مشکل تبدیل می‌شوند. برای فایل‌های بسیار بزرگ (صدها مگابایت)، از یک تجزیه‌کننده جریانی مانند Papa Parse در Node.js یا ماژول csv در Python استفاده کنید که داده را سطر به سطر بدون بارگذاری کامل در حافظه پردازش می‌کنند.
چطور سطرهای CSV با تعداد ستون متفاوت مدیریت می‌شوند؟
CSV‌های نامنظم (سطرهایی با تعداد فیلد کمتر یا بیشتر از سرصفحه) در صادرات واقعی رایج هستند. این مبدل فیلدهای غایب را با رشته خالی پر می‌کند و فیلدهای اضافی فراتر از تعداد سرصفحه را نادیده می‌گیرد. اگر داده شما به‌طور مداوم نامنظم است، فایل منبع را برای جداکننده‌های escape نشده یا گیومه‌های گم‌شده بررسی کنید.
تفاوت بین خروجی آرایه JSON و شیء JSON چیست؟
آرایه‌ای از اشیاء JSON خروجی استاندارد است: هر سطر CSV به یک شیء در آرایه تبدیل می‌شود و نام سرصفحه‌ها به‌عنوان کلید استفاده می‌شوند. برخی ابزارها همچنین خروجی «ستون‌محور» ارائه می‌دهند که در آن هر سرصفحه یک کلید با آرایه‌ای از تمام مقادیر آن ستون می‌شود. فرمت آرایه از اشیاء برای API‌ها، پایگاه‌های داده و اتصال داده فرانت‌اند رایج‌تر است.