الانتقال إلى المحتوى
العربية
المنضدةأدوات لا ترفع شيئا
ورشة تابعة لجمعية ODERSAلا شيء يخرج، ولا شيء يُحفظ، ولا شيء يصلنا.

الورشة · CSV وJSON

كيف تعمل : CSV وJSON

الأمر الذي لا يكاد يقوله أحد: «صيغة CSV» ليست معيارا. فوثيقتها المرجعية تحمل عبارة «للعلم» وتكتب هي نفسها أن ثمة فروقا كبيرة بين التنفيذات. ولهذا تقيس هذه الأداة الفاصل بدل افتراضه، وتعرض عليكم ما وجدته.

فتح الأداة

اتجاه التحويل يُستنتج مما تلصقونه: فالنص الذي يبدأ بقوس معقوف أو بقوس مربع هو JSON، وكل ما عداه CSV. وهذا هو المنطق نفسه الذي في الخزنة المشفَّرة وملف PDF المحمي في هذا الموقع: فنحن لا نطلب اختيار نمط لا يعرفه الناس.

وصيغة CSV بلا معيار، وهذا مصدر جل المتاعب. فالوثيقة المرجعية تحمل عبارة «للعلم»، وهي تكتب بنفسها أن ثمة فروقا كبيرة بين التنفيذات. وفي جدول حسابات أوروبي، الفاصل فاصلة منقوطة، لأن الفاصلة هناك هي الفاصل العشري. لذلك تقيس الأداة الفاصل: هي تجرّب المرشحين الأربعة وتحتفظ بالذي يعطي عدد الأعمدة الأكثر انتظاما، ثم تعرض الذي اعتمدته.

وقواعد الوثيقة المرجعية مطبَّقة بحرفها، ومنها التي يخفق فيها نصف المحوّلات: فالحقل المحاط بعلامتي اقتباس يمكن أن يحتوي فاصل سطر. ولهذا يتقدم القارئ حرفا حرفا بدل تقسيم النص أسطرا. وعلامة الاقتباس داخل حقل محاط تُضاعَف، والأداة تكتبها كذلك في الاتجاه المعاكس.

كيف تعمل

  1. الصقوا ملفكم بصيغة CSV، أو بصيغة JSON. تتعرف الأداة على أيهما وتعرض اتجاه التحويل.
  2. تأكدوا من الفاصل الذي قاسته، ومن سطر الترويسة الأول. فهما الشيئان الوحيدان اللذان يمكن أن يخدعا محوّلا.
  3. انسخوا النتيجة أو نزّلوها. ويقول لكم الجدول كم سطرا وكم عمودا قُرئ.

الصيغ المقبولة

الاتجاه يُستنتج من النص. ويجب أن يكون نص JSON مصفوفة كائنات كي يعطي جدولا بُعدين: وهذه هي الصورة التي تنتجها أغلب عمليات التصدير.

نص بصيغة CSV

الفاصل مقيس بين الفاصلة والفاصلة المنقوطة وعلامة الجدولة والشرطة الرأسية. والحقول المحاطة بعلامتي اقتباس، وعلامات الاقتباس المضاعفة، وفواصل الأسطر داخل حقل، كلها معالَجة.

نص بصيغة JSON

مصفوفة الكائنات تعطي سطرا لكل كائن وعمودا لكل مفتاح يُصادَف. والقيمة المتداخلة تُكتب بصيغة JSON في خانتها، والأداة تشير إلى ذلك.

الاطلاع على جدول التوافق

حدودها

لا يوجد معيار لصيغة CSV، والأداة لا تدّعي غير ذلك

الوثيقة المرجعية لسنة 2005 مصنَّفة «للعلم»: فهي تصف استعمالا ملحوظا، ولا تعيّره، وهي تكتب بنفسها أن ثمة فروقا كبيرة بين التنفيذات. والنتيجة العملية: أن ملفا يقبله برنامج قد يرفضه آخر، وليس ذلك ذنب أحد. والأداة تطبّق قواعد هذه الوثيقة وتعرض ما قاسته، كي تستطيعوا الحكم.

ملف JSON بعدة مستويات لا يصير ملف CSV بعدة مستويات

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

تحويل الأعداد مقترح، وهو قد يتلف معرّفا

رمز بريدي يبدأ بصفر، أو رقم هاتف، أو معرّف من تسعة عشر رقما: تحويلها إلى أعداد يفقدها صفرها الأول أو أرقامها الأخيرة. والخانة موضوعة العلامة افتراضيا لأن هذا ما يُنتظر من ملف قياسات، لكن انزعوها في ملف مراجع: فيبقى كل شيء نصا.

علامة ترتيب البايتات مقترحة لملف CSV، ولا مصادفة في ذلك

جدول حسابات واسع الانتشار لا يعرض ملف CSV بترميز UTF-8 عرضا صحيحا إلا إذا بدأ الملف بهذه العلامة: وثيقته تقول ذلك. ومن دونها تصير الحروف المشكَّلة سلاسل رموز غريبة. لكن هذه العلامة نفسها تُفشل برامج أخرى، تقرؤها حرفا من الحقل الأول. فلا يوجد خيار جيد شامل: والخانة موجودة، وسببها مكتوب إلى جانبها.

أسئلة عن هذه الأداة

هل تُرسَل بياناتي إلى مكان ما؟

لا، وهذا يهم: فملف CSV هو دائما تقريبا تصدير بيانات حقيقية، وفيه أسماء وعناوين غالبا. تحققوا في ثلاثين ثانية: افتحوا أداة الفحص بمفتاح F12، وتبويب «الشبكة»، وأفرغوا القائمة، ثم الصقوا ملفكم وحوّلوه. لن يظهر أي سطر. واقطعوا اتصالكم وأعيدوا الكرّة.

في ملفي بصيغة CSV فواصل منقوطة، هل هذه مشكلة؟

لا، بل هي الحالة الأشيع في أوروبا. فلما كانت الفاصلة هناك تخدم بوصفها فاصلا عشريا، استعملت جداول الحسابات الفاصلة المنقوطة لفصل الأعمدة. والأداة تجرّب الفواصل الأربعة الممكنة وتحتفظ بالذي يعطي عدد الأعمدة الأكثر انتظاما، ثم تقول لكم أيها اعتمدت. فإن أخطأ قياسها، فافرضوه من القائمة.

رموزي البريدية تفقد صفرها الأول.

انزعوا العلامة عن «تحويل ما يشبه العدد إلى عدد». فالرمز البريدي، ورقم الهاتف، ورقم الحساب ليست أعدادا: هي سلاسل أرقام، ومعاملتها معاملة الأعداد يفقدها صفرها الأول. والخانة موضوعة العلامة افتراضيا لأن هذا ما يُنتظر من ملف قياسات، لكنها تُنزَع بنقرة واحدة فيبقى كل شيء نصا.

لماذا تتلف الحروف المشكَّلة حين أفتح ملف CSV في جدول الحسابات عندي؟

لأن جدول حسابات واسع الانتشار لا يتعرف على ترميز UTF-8 في ملف CSV إلا إذا بدأ الملف بعلامة ترتيب بايتات: وذلك مكتوب في وثيقته هو. ضعوا العلامة على الخانة التي تضيفها وأعيدوا فتح الملف. وانتبهوا للعكس: فهذه العلامة نفسها تُفشل بعض البرامج، التي تقرؤها حرفا من الحقل الأول. فلا يوجد خيار جيد شامل، بل الخيار الذي يناسب الوجهة.

في نص JSON عندي كائنات داخل كائنات. ماذا يحل بهذه البنية؟

هي محفوظة، لكنها مكتوبة بصيغة JSON داخل الخانة، والأداة تشير إلى ذلك. فملف CSV جدول مسطّح، ببعدين: ولا توجد طريقة شاملة لترتيب بنية بثلاثة مستويات فيه. والأعراف موجودة، وهي تصنع أسماء أعمدة مثل «العنوان.المدينة»، وكل واحد منها اختيار اعتباطي. ونحن نؤثر حفظ بيانتكم سليمة وإخباركم أين هي.