محوّل CSV إلى JSON

تحويل بيانات CSV إلى مصفوفة JSON أو تنسيق كائن

يعمل محليًا · آمن للصق الأسرار
سيظهر CSV هنا…

ما هو تحويل CSV إلى JSON؟

CSV (القيم المفصولة بفواصل) هو تنسيق جدولي بنص عادي، تمثّل فيه كل سطر سجلاً من البيانات، وتفصل المحددات الحقول داخل السجل الواحد، وعادةً ما يكون المحدد فاصلة. أصبح CSV معيار تبادل بيانات شائعاً منذ فجر الحوسبة الشخصية، وقد تمت صياغته رسمياً في RFC 4180. تنتج جداول البيانات وقواعد البيانات وأدوات تصدير البيانات ملفات CSV لأنها بسيطة ومضغوطة وقابلة للقراءة بأي لغة برمجة تقريباً.

يمثّل JSON (JavaScript Object Notation) البيانات المنظمة على شكل أزواج مفتاح-قيمة ومصفوفات مرتبة. على خلاف CSV، يدعم JSON الكائنات المتداخلة والقيم المكتوبة (أرقام، قيم منطقية، null)، فضلاً عن السجلات ذات الأطوال المتغيرة. ولأن JSON مفهوم بصورة أصلية في محركات JavaScript، فهو التنسيق السائد لتبادل البيانات بين المتصفح والخادم واستجابات REST API. هذه الخصائص تجعل JSON التنسيق الافتراضي لواجهات برمجة التطبيقات على الويب وملفات الإعداد وقواعد بيانات 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 API أو GraphQL API. تقبل كثير من أدوات ORM والترحيل مجموعات بيانات JSON للتحميل الأولي للبيانات.
إعداد بيئة DevOps
حوّل قوائم الجرد CSV أو متغيرات البيئة إلى JSON للاستخدام في كتب تشغيل Ansible أو ملفات متغيرات Terraform أو إعدادات CI/CD.
إعداد بيانات اختبار ضمان الجودة
حوّل مصفوفات الاختبار المبنية على جداول البيانات إلى مصفوفات JSON قابلة للاستهلاك من أطر الاختبار مثل Jest أو pytest أو Playwright للاختبار المدفوع بالبيانات.
مسارات هندسة البيانات
حوّل مخرجات CSV من استعلامات SQL أو تصدير ETL إلى JSON للتحميل في مخازن المستندات مثل MongoDB أو Elasticsearch أو وضع استيعاب JSON في BigQuery.
مشاريع الطلاب والتعلم
حوّل بسرعة مجموعات بيانات CSV النموذجية (Kaggle، بوابات البيانات المفتوحة الحكومية) إلى JSON للاستخدام في مناهج تطوير الويب أو الدروس التعليمية أو المشاريع الشخصية.

مرجع محددات 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 مقابل JSON: الفروق الهيكلية

الفجوة بين التنسيقين هي السبب في أن تعيين الرؤوس واستنتاج الأنواع ومعالجة القيم المفقودة تستلزم قرارات صريحة أثناء التحويل.

CSV
تنسيق مسطح موجّه بالصفوف. لكل سجل نفس عدد الحقول. جميع القيم سلاسل نصية ما لم يستنتج المستهلك الأنواع. لا يدعم التداخل أو السجلات ذات الأطوال المختلفة. صف الرأس اختياري وفق RFC 4180، لكنه مطلوب للتحويل الذي يتمتع بقيمة دلالية إلى JSON.
JSON
تنسيق ذو بنية شجرية يصف نفسه. يمكن لكل كائن أن يمتلك مفاتيح مختلفة. القيم مكتوبة: سلسلة نصية، رقم، قيمة منطقية، null، كائن، أو مصفوفة. يدعم التداخل بعمق اعتباطي. ترتيب الخصائص غير مضمون بموجب مواصفة JSON (ECMA-404)، وإن كانت معظم المحللات تحافظ على ترتيب الإدراج.

أمثلة برمجية

كيفية تحويل CSV إلى JSON برمجياً في اللغات وأدوات سطر الأوامر الشائعة:

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. يمكن للحقول المحاطة بعلامات اقتباس مزدوجة أن تحتوي على فاصلات وأسطر جديدة وحتى علامات اقتباس مزدوجة (يُهرَّب منها بـ""). يزيل المحوّل علامات الاقتباس الخارجية ويحافظ على المحتوى الداخلي كقيمة سلسلة JSON واحدة.
هل يحافظ التحويل على أنواع البيانات كالأرقام والقيم المنطقية؟
CSV تنسيق غير مكتوب؛ جميع قيم الخلايا سلاسل نصية. يُخرج هذا المحوّل قيماً نصية افتراضياً لتفادي فقدان البيانات. إذا احتجت مخرجات مكتوبة، حلّل نتيجة JSON في تطبيقك وحوّل الحقول صراحةً. تقدم مكتبات مثل Papa Parse (JavaScript) وpandas (Python) خيارات الكتابة الديناميكية أثناء التحليل.
هل يمكنني تحويل CSV يستخدم فاصلات منقوطة أو تبويبات بدلاً من الفاصلة؟
نعم. تدعم الأداة الفاصلة والتبويب والفاصلة المنقوطة والشريط العمودي محددات. اختر المحدد الصحيح من القائمة المنسدلة، أو دع الاكتشاف التلقائي يتعرف عليه. الفاصلة المنقوطة شائعة في تصدير CSV من Excel بالإعدادات المحلية الأوروبية، حيث تُستخدم الفاصلة فاصلاً عشرياً.
هل هناك حد لحجم ملف CSV المُدخَل؟
بما أن المعالجة تعمل كلياً في المتصفح، يعتمد الحد العملي على الذاكرة المتاحة في جهازك. عادةً تُحوَّل الملفات حتى 10-20 ميغابايت دون مشاكل على الأجهزة الحديثة. للملفات الكبيرة جداً (مئات الميغابايت)، استخدم محللاً متدفقاً مثل Papa Parse في Node.js أو وحدة csv في Python، اللتين تعالجان البيانات صفاً صفاً دون تحميل كل شيء في الذاكرة.
كيف أتعامل مع صفوف CSV ذات أعداد مختلفة من الأعمدة؟
ملفات CSV غير المنتظمة (صفوف بحقول أقل أو أكثر من الرأس) شائعة في التصدير من الأنظمة الواقعية. يملأ هذا المحوّل الحقول المفقودة بسلاسل فارغة ويتجاهل الحقول الزائدة عن عدد الرأس. إذا كانت بياناتك غير منتظمة باستمرار، افحص الملف المصدر بحثاً عن محددات غير مُهرَّبة أو علامات اقتباس مفقودة.
ما الفرق بين مخرجات مصفوفة JSON وكائن JSON؟
مصفوفة JSON من الكائنات هي المخرجات المعيارية: يصبح كل صف CSV كائناً واحداً في المصفوفة، مع أسماء رؤوس الأعمدة مفاتيح. تقدم بعض الأدوات أيضاً مخرجات "موجّهة بالأعمدة" حيث يصبح كل رأس مفتاحاً يحمل مصفوفة من جميع قيم ذلك العمود. تنسيق مصفوفة الكائنات أكثر شيوعاً في واجهات برمجة التطبيقات وقواعد البيانات وربط بيانات الواجهة الأمامية.