ما الذي يتغير عند تحويل البيانات بين JSON وCSV وYAML وXML؟
الصيغ الأربع تمثّل البيانات بطرق مختلفة: JSON وYAML تحملان التداخل والأنواع، وCSV جدول مسطّح من النصوص، وXML يفرّق بين العناصر والسمات. لذلك يضطر المحوّل إلى اتخاذ قرارات — كيف تُسطَّح الكائنات المتداخلة إلى أعمدة، وكيف تُفسَّر "42" و"true"، وأين تُوضع السمات — والقرار الصحيح يعتمد على ما يتوقعه النظام المستقبِل.
كيفية استخدام محوّل CSV إلى JSON
- الصق نص CSV أو TSV يحتوي على صف ترويسة، أو ألغِ تحديد خيار «الصف الأول ترويسة» (First row is a header).
- اضبط خيارات الفاصل واستنتاج الأنواع والتداخل.
- انسخ مصفوفة JSON الناتجة أو نزّلها.
مزايا محوّل CSV إلى JSON
- محلّل وفق RFC 4180: الحقول المقتبسة والفواصل والأسطر الجديدة المضمّنة وعلامات الاقتباس المزدوجة المكررة
- اكتشاف تلقائي للفاصل (فاصلة، فاصلة منقوطة، علامة جدولة، شريط عمودي)
- استنتاج أنواع الأرقام والقيم المنطقية وnull؛ ويمكن اختيارياً تحويل الخلايا الفارغة إلى null
- إعادة بناء الكائنات والمصفوفات المتداخلة من الترويسات المنقّطة (address.city وtags.0)
- الإبلاغ عن الصفوف ذات العدد الخاطئ من الحقول وعن الترويسات المكررة
- اختيار المسافة البادئة أو الإخراج المصغّر
مثال على محوّل CSV إلى JSON
حقول مقتبسة وأعمدة متداخلة
الإدخال:
id,name,address.city,active
1,"Jamil, Sara",Jeddah,trueالنتيجة:
[
{
"id": 1,
"name": "Jamil, Sara",
"address": { "city": "Jeddah" },
"active": true
}
]الأسئلة الشائعة حول محوّل CSV إلى JSON
ما الفواصل المدعومة؟
الفاصلة والفاصلة المنقوطة وعلامة الجدولة والشريط العمودي. ويختار الاكتشاف التلقائي الفاصل الذي يظهر بأكبر قدر من الاتساق عبر الأسطر الأولى.
هل تُعالج الحقول المقتبسة التي تحتوي على فواصل أو أسطر جديدة؟
نعم. يتبع المحلّل معيار RFC 4180: يمكن للحقول المحاطة بعلامات اقتباس مزدوجة أن تحتوي على الفاصل وفواصل الأسطر وعلامات الاقتباس المكررة ("").
كيف يعمل استنتاج الأنواع؟
تُحوَّل الخلايا التي تبدو كأعداد صحيحة أو عشرية أو true/false أو null إلى نوع JSON المقابل. وتبقى الأرقام التي تبدأ بأصفار (مثل 007) سلاسل نصية. عطّل الاستنتاج للاحتفاظ بكل شيء كنص.
هل يمكنني إعادة بناء الكائنات المتداخلة من أسماء الأعمدة؟
نعم. تُحوَّل الترويسات مثل address.city أو tags.0 مجدداً إلى كائنات ومصفوفات متداخلة عند تفعيل خيار «تداخل الأعمدة المنقّطة» (Nest dotted columns).
ملاحظات تقنية
المحلّل آلة حالات تمرّ على الأحرف مرة واحدة: تُحذف علامة BOM في البداية، ويُتجاهل \r خارج علامات الاقتباس (فتعمل CRLF وLF معاً، أما ملفات CR وحدها فلا)، ولا تكون علامة الاقتباس خاصة إلا في بداية الحقل، لذا تبقى x"y كما هي. ويقيّم اكتشاف الفاصل الفاصلة والفاصلة المنقوطة وعلامة الجدولة والشريط العمودي على الأسطر العشرة الأولى، فيختار أعلى حدّ أدنى في السطر ويضاعفه عند اتساق العدد. وتُشذَّب كل خلية، مقتبسة كانت أم لا.
استنتاج الأنواع ضيّق عمداً: لا يُحوَّل إلا null/NULL وtrue/TRUE وfalse/FALSE والأعداد الصحيحة حتى 15 رقماً دون صفر بادئ، والكسور العشرية التي يليها رقم بعد النقطة (مع أسّ اختياري) — أما 007 و1e3 و+1 و1,000 والمعرّفات ذات 16 رقماً فتبقى سلاسل نصية. ولا يحمي اقتباس الخلية من الاستنتاج؛ ألغِ تفعيل الخيار بدلاً من ذلك. وتُعاد بناء الترويسات المنقوطة أو ذات الأقواس (a.b وx[0]) عبر unflattenJson مع تحويل المقاطع الرقمية إلى مصفوفات؛ وعند تعارض المسارات يفوز العمود اللاحق.
المراجع
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Formatقواعد JSON: الكائنات والمصفوفات والنصوص والأرقام والقيم الثلاث الثابتة، وUTF-8 كترميز للتبادل.
- RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Filesقواعد CSV الشائعة: الفاصلة كفاصل، ونهايات الأسطر CRLF، وتحويط الحقول التي تحتوي فواصل أو علامات اقتباس أو أسطر جديدة.
- YAML Ain't Markup Language (YAML™) version 1.2.2نموذج بيانات YAML 1.2 وصياغته وعلاقته بـ JSON (كل مستند JSON هو YAML 1.2 صالح).