تحويل CSV إلى JSON
الصق نص CSV فيه صف عناوين واحصل على سجل لكل صف: في Ada, "Compiler, pioneer", true تبقى الفاصلة داخل علامتي الاقتباس ضمن القيمة نفسها. وإذا زادت أعمدة صف أو نقصت، يُذكر رقمه. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
تدعم الأداة الفواصل داخل علامات الاقتباس، وعلامات الاقتباس المهروبة، ونهايات الأسطر في Windows وUnix، والأسطر الجديدة داخل القيم المقتبسة. يجب أن يضم كل صف بيانات عدد الأعمدة نفسه الموجود في العنوان، وإلا تتوقف العملية برسالة خطأ دقيقة.
جهّز نص CSV بصف عناوين موثوق
ابدأ بصف عناوين يمنح كل عمود اسمًا فريدًا غير فارغ. تبقى القيم سلاسل نصية لأن CSV لا يحمل نظام أنواع موثوقًا. قد تكون القيمة التي تبدو رقمًا رمز حساب له أصفار بادئة مهمة، وقد يختلف تفسير التاريخ بين البلدان.
يحافظ إبقاء النص كما هو على البيانات من التخمينات الضارة، ويتيح للتطبيق المستقبِل تطبيق مخططه الخاص. يقبل المحول نهايات الأسطر في Unix وWindows، ويزيل علامة ترتيب البايتات الأولية التي تضيفها بعض برامج الجداول. كما يدعم قواعد الاقتباس القياسية في CSV.
ضع القيمة بين علامتي اقتباس مزدوجتين إذا احتوت على فاصلة أو سطر جديد، واكتب علامة الاقتباس الحرفية مرتين. لا تُحذف المسافات، فقد تكون جزءًا مهمًا من المعرّفات أو المحتوى.
تعرّف إلى التدقيق الصارم لعدد الأعمدة
تتعامل عملية التحويل مع البنية بصرامة مقصودة. بعد تحليل صف العناوين، تحصي أعمدته وتلزم كل سجل تالٍ بالعدد نفسه. إذا كانت القيمة الأخيرة مفقودة، فيجب تمثيلها بحقل فارغ مع الفاصلة التي تبدأه.
كذلك تنشئ الفاصلة غير المتوقعة عمودًا إضافيًا، إلا إذا وقعت داخل حقل مقتبس بصورة صحيحة. عندما لا يتطابق سجل، تعرض العملية رقم صف CSV بدءًا من واحد، وعدد الأعمدة الموجود، والعدد المتوقع. يمنع ذلك عيبًا شائعًا وخطيرًا في المحولات المتساهلة: انتقال القيم إلى عناوين خاطئة أو اختفاء الحقول الناقصة من دون تنبيه.
القيم الفارغة مسموحة وتصبح سلاسل فارغة، أما السجلات غير المتسقة فمرفوضة. يرفض المحلل أيضًا الحقل المقتبس غير المغلق، وعلامة الاقتباس وسط حقل غير مقتبس، وأي محرف بعد علامة الاقتباس الختامية. تكشف هذه الفحوص التصدير المعيب عند الإدخال، قبل تخزين خصائص خاطئة أو تحويلها في مراحل لاحقة.
الخوارزمية حتمية؛ لذلك ينتج نص CSV نفسه المخرجات نفسها دائمًا، من دون طلب شبكة أو قيمة عشوائية أو طابع زمني. تعامل مع النتيجة بوصفها تحويلًا بنيويًا أمينًا لا عملية لتنظيف البيانات. لا تستنتج الأداة الأرقام أو القيم المنطقية أو التواريخ أو null، ولا تعيد تسمية العناوين أو تصلح الصفوف التالفة.
هذا الفصل مفيد: يحدد التحويل القيمة التابعة لكل عنوان، ثم يقرر مخطط لاحق معنى القيمة. إذا كان المصدر يستخدم فاصلًا آخر، فوحّده إلى فواصل قبل التحويل. واحتفظ بالصف الذي فشل كحالة اختبار ارتدادي حتى لا يعيد تصدير لاحق العيب البنيوي نفسه من دون اكتشاف.
حالات الاستخدام
التحقق من مسار التصدير
ارفض ملف CSV الناتج فور احتواء أي سجل على حقول أقل أو أكثر مما يعلنه صف العناوين.
الأسئلة الشائعة
هل يمكن أن تحتوي الحقول على فواصل أو أسطر جديدة؟
نعم. ضع الحقل بين علامتي اقتباس مزدوجتين، واكتب علامة الاقتباس الحرفية داخله مرتين.
ماذا يحدث إذا كان عدد أعمدة أحد الصفوف غير صحيح؟
يفشل التحويل بخطأ إدخال يحدد الصف ويعرض عدد الأعمدة الفعلي والعدد المتوقع.
هل الخلايا الفارغة مدعومة؟
نعم. تصبح الخلية الفارغة سلسلة فارغة ما دام الصف يحتفظ بعدد الأعمدة الصحيح.
لماذا تبقى الأرقام والتواريخ نصًا؟
لأن CSV لا يحمل أنواعًا موثوقة: فقد يكون ما يشبه الرقم رمز حساب تهمّ فيه الأصفار الأولى، وقد يُقرأ التاريخ بطرق مختلفة بحسب المنطقة. يقرر تطبيقك لاحقًا نوع كل قيمة.
هل يمكن تحويل ملف مفصول بفواصل منقوطة؟
ليس مباشرة، فالمحول يتوقع قيمًا مفصولة بفواصل عادية، لذا استبدل الفاصل أولًا. والقيم التي تحتوي على فاصلة يجب وضعها بين علامتي اقتباس مزدوجتين.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/web/csv-to-json \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"name,role,active\nAda,Engineer,true\nGrace,Admiral,false"}'const res = await fetch("https://api.kit.forhosting.com/web/csv-to-json", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "name,role,active\nAda,Engineer,true\nGrace,Admiral,false"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/csv-to-json",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "name,role,active\nAda,Engineer,true\nGrace,Admiral,false"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/csv-to-json", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"name,role,active\\nAda,Engineer,true\\nGrace,Admiral,false"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"name,role,active\nAda,Engineer,true\nGrace,Admiral,false"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/csv-to-json", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "name,role,active\nAda,Engineer,true\nGrace,Admiral,false"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.csv_to_json",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
timeout_sec | 30 |
max_crawl_pages | 25 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
حوّل CSV إلى JSON عندما تحتاج إلى كائن ثابت البنية لكل صف من البيانات، من دون قبول الإدخال المعيب بصمت. الصق نص CSV يتضمن صف عناوين، وستُستخدم كل تسمية مفتاحًا لخاصية JSON.
جهّز نص CSV بصف عناوين موثوق
تصبح هذه الأسماء مفاتيح في كل كائن JSON؛ فالعناوين name,email,status تنشئ كائنات تضم هذه المفاتيح الثلاثة نفسها. ويُعد المستند الذي لا يحتوي إلا على صف العناوين صالحًا، وتكون نتيجته مصفوفة JSON فارغة.
استخدم مخرجات JSON بأمان في التطبيقات
النتيجة مصفوفة JSON تحافظ على ترتيب الصفوف الأصلي، وتضم كائنًا بسيطًا لكل سجل بيانات. يمكنك إرسالها إلى API، أو فحصها في اختبار، أو حفظها مستند JSON، أو تمريرها إلى خطوة تحقق تطبق أنواع البيانات الخاصة بالمجال. عند الأتمتة، تبلغ كلفة API مقدار $0.002 لكل طلب، ويمكن إجراء التحويل التفاعلي داخل المتصفح.
حالات التكامل
إعداد حمولة لإرسالها إلى API
حوّل تصدير جدول البيانات إلى كائنات ذات مفاتيح متسقة قبل تطبيق المخطط الخاص بواجهة API.
إنشاء بيانات اختبار حتمية
حوّل عينات CSV المختصرة إلى مصفوفات JSON ثابتة يسهل مقارنتها في الاختبارات الآلية.
أسئلة تقنية
هل تتحول الأرقام والقيم المنطقية إلى أنواع JSON أصلية؟
لا. تبقى كل خلية CSV سلسلة نصية كي لا تتغير الرموز والأصفار البادئة والقيم الملتبسة بسبب التخمين.
ما كلفة التحويل عبر API؟
تبلغ الكلفة $0.002 لكل طلب API، ويمكن تشغيل التحويل الحتمي نفسه تفاعليًا داخل المتصفح.