CSV وJSON: طريقتان لحمل البيانات نفسها
تنتهي معظم البيانات الجدولية مقيمةً في واحدة من صيغتين. CSV هي اللغة الأم لجدول البيانات: ملف نص صِرف حيث يمثّل كل سطر صفًا وتفصل الفواصل بين الأعمدة. وJSON هي لغة واجهات البرمجة والتطبيقات: صيغة نص منظّمة مبنية من كائنات (أزواج مفتاح وقيمة) ومصفوفات (قوائم مرتّبة). تصف الاثنتان المعلومات نفسها بأشكال مختلفة جدًا، وهذا بالضبط سبب تكرّر التحويل بينهما كثيرًا. تؤدي هذه الصفحة ذلك التحويل في الاتجاهين، بالكامل داخل متصفحك.
تتألق CSV حيثما تبدو الشبكة طبيعية. صدّر تقريرًا من قاعدة بيانات، أو نزّل قائمة طلبات، أو احفظ ورقة من Excel أو Google Sheets، فستحصل دائمًا تقريبًا على CSV. إنها مدمجة، وقابلة للقراءة البشرية، وكل أداة تحليلات على وجه الأرض تستطيع فتحها. وتتألق JSON حيثما تتحدث البرمجيات إلى البرمجيات. فواجهات REST ترسلها وتستقبلها، وملفات الإعداد تستخدمها، وجافاسكربت تقرأها دون أي مكتبة تحليل. حين تحتاج إلى تغذية تصدير جدول بيانات إلى واجهة برمجة أو سحب استجابة واجهة إلى جدول بيانات، فأنت في الحقيقة تترجم بين هذين العالمين.

كيف تصبح الصفوف والترويسات كائنات
التطابق أبسط مما يبدو. السطر الأول من ملف CSV هو عادةً صف الترويسة، وتلك الأسماء تصبح المفاتيح في JSON. ويصبح كل صف تالٍ كائنًا واحدًا، حيث تُقرَن كل خلية بالترويسة المطابقة. ويصبح الملف كله مصفوفة من تلك الكائنات. فملف CSV بأعمدة name,email,age يتحول إلى قائمة مثل [{"name": "Ada", "email": "ada@example.com", "age": "36"}, ...]. وفي الاتجاه الآخر، تقرأ JSON إلى CSV مفاتيح الكائن الأول لبناء سطر الترويسة، ثم تكتب صفًا لكل كائن. إنها رحلة ذهاب وإياب نظيفة ومتوقعة طالما أن بياناتك جدولية حقًا.
المطبّات الجديرة بالمعرفة
تبدو CSV تافهة لكنها تخفي بضع حواف حادة. أكبرها الفواصل داخل الحقل. فإذا احتوى عنوان على «برلين، ألمانيا»، فإن تقسيمًا ساذجًا عند الفواصل سيمزّق تلك القيمة الواحدة إلى عمودين. ويتعامل معيار CSV مع هذا بتغليف تلك الحقول بعلامات اقتباس مزدوجة، وعلامات الاقتباس داخل حقل مقتبَس تُضاعَف (""). والمحوّل الجيد يحترم تلك القواعد كي لا تنزاح بياناتك بين الأعمدة بصمت. وراقب الفاصل أيضًا: كثير من الصادرات الأوروبية تستخدم فاصلة منقوطة بدل الفاصلة، لأن الفاصلة هناك فاصل عشري أصلًا. وتظهر علامات الجدولة والأنابيب كذلك.
الفرق الأعمق هو الأنواع. ليس لدى CSV أي مفهوم لأنواع البيانات إطلاقًا. كل شيء نص، فالرقم 42، والقيمة المنطقية true، والخلية الفارغة، كلها تبدو سلاسل نصية بسيطة. أما JSON فتميّز بين الأرقام والسلاسل والقيم المنطقية والقيمة الفارغة (null) والبنى المتداخلة. حين تحوّل CSV إلى JSON، تصل القيم كسلاسل ما لم يُطلب من الأداة تفسير الأرقام والقيم المنطقية. وتحويل JSON إلى CSV يحمل المشكلة المعاكسة: الكائنات والمصفوفات المتداخلة لا تتسع بأناقة في شبكة مسطحة، فعادةً ما تُسطَّح أو تُحوَّل إلى سلسلة داخل خلية واحدة. ومعرفة هذا مسبقًا توفّر عليك الحيرة لاحقًا حول سبب «خطأ مظهر» عمود ما.

رحلة ذهاب وإياب واقعية
إليك سيناريو يتكرر باستمرار. يرسل لك زميل جدول بيانات بمستخدمين جدد ويطلب منك تحميلهم عبر واجهة برمجة داخلية. لا تقبل الواجهة سوى JSON. تصدّر الورقة إلى CSV، وتلصقها هنا، فتحصل على مصفوفة نظيفة من الكائنات جاهزة لإسقاطها في حمولة طلبك. لاحقًا، تعيد الواجهة قائمة JSON بالسجلات التي أنشأتها، وتحتاج إلى تسليمها للزميل نفسه للمراجعة. تلصق JSON، وتحوّلها إلى CSV، فتُفتح مباشرة في جدول بياناته. لا سكربتات، ولا تثبيتات، فقط ترجمتان سريعتان في خضمّ سير عمل عادي.
محلي فقط، بالتصميم
كل هذا يجري في متصفحك. تُحلَّل CSV وJSON وتُحوَّلان بواسطة جافاسكربت على جهازك أنت، ولا يُرفع شيء إلى خادم. وهذا يهم لأن الصادرات تحتوي غالبًا على أسماء حقيقية أو بريد إلكتروني أو تفاصيل طلبات أو معرّفات داخلية لا ينبغي أن تلصقها في خدمة بعيدة عشوائية. هنا لا تغادر البيانات الصفحة أبدًا. وإن أردت ترتيب النتيجة بعد ذلك، فإن منسّق JSON لدينا سيُجمّلها ويتحقق منها، ويمكنك تصفّح بقية محوّلات البيانات للصيغ ذات الصلة.
الأسئلة الشائعة
هل تُرفع بياناتي إلى أي مكان؟
لا. يجري التحويل بالكامل في متصفحك باستخدام جافاسكربت، فتبقى CSV وJSON على جهازك أنت ولا تُرسَل إلى خادم أبدًا.
هل يتعامل المحوّل مع الفواصل داخل الحقول؟
نعم. ينبغي تغليف الحقول التي تحتوي على فواصل بعلامات اقتباس مزدوجة في CSV، ويحترم المحلّل تلك العلامات فتبقى القيمة في عمود واحد.
لماذا تظهر أرقامي كنصوص في JSON؟
ليس لدى CSV أنواع بيانات، فكل خلية نص بسيط. تصبح القيم سلاسل JSON ما لم يُطبَّق تحليل الأرقام والقيم المنطقية، لأن الملف المصدر لا يتيح طريقة لتمييز الرقم عن الكلمة.
ماذا يحدث لـJSON المتداخلة حين أحوّل إلى CSV؟
لا تستطيع الشبكة المسطحة حمل البنى المتداخلة، فالكائنات والمصفوفات المتداخلة تُسطَّح عادةً أو تُكتَب كقيمة نصية واحدة داخل خلية واحدة.
هل يمكنني استخدام فاصلة منقوطة أو علامة جدولة بدل الفاصلة؟
نعم. كثير من الصادرات، خاصةً الأوروبية، تستخدم الفواصل المنقوطة أو علامات الجدولة كفواصل، وتستطيع الأداة قراءتها بدل الفاصلة القياسية.
هل يحوّل في الاتجاهين؟
نعم. يمكنك تحويل CSV إلى JSON وJSON عودةً إلى CSV، ما يجعل رحلات الذهاب والإياب بين جداول البيانات وواجهات البرمجة مباشرة.
