أدوات المطور · محولات بناء الجملة
CSV إلى JSON وJSON إلى CSV: الرؤوس وقيم السلسلة والتسوية
· كيف يعمل
json ملف CSV تنسيقات البيانات
CSV مسطح، عديم الكتابة وغامض فيما يتعلق بالمحدد الخاص به، بينما JSON متداخل ومكتوب. يوضح هذا المنشور كيف يقوم المحول بتعيين الصفوف للكائنات والعودة، وأين يتم فقدان المعلومات في كل اتجاه.
تم إرجاع كل رقم بين علامتي اقتباس - تم تحويل التصدير CSV إلى JSON حيث أصبح 42 "42" واحتفظ رمز ZIP بالصفر البادئ لمرة واحدة
يطلب المصنف CSV-to-JSON أمثلة، ولكن ToolAcre لا يقرأ أبدًا CSV. يعلن المحرك عن تسعة أزواج موجهة بالضبط، ولا يبدأ أي منها بـ CSV. قد تتطلب قراءة ملف اختيارات حول المحدد والاقتباس ووجود الرأس وأنواع الخلايا؛ ترفض هذه اللجنة تقديم أربعة تخمينات صامتة. وبالتالي فإن المقالة المصححة توثق الاتجاه الذي تم شحنه من JSON إلى CSV.
يظهر هذا القرار أحادي الاتجاه في كل من الواجهة والأخطاء. يظهر CSV كهدف، وليس كمصدر، وتؤدي محاولة العودة العكسية إلى `UNSUPPORTED_CONVERSION` مع نصيحة لاستخدام أداة تسأل عن اللهجات وأنواعها. العنوان الذي يقترح كلا الاتجاهين من شأنه أن يحرف المنتج حتى لو كان الموضوع العام شائعًا في مكان آخر.
CSV لم تتم قراءته هنا: ابدأ بالمسار JSON-to-CSV الذي تشحنه الأداة بالفعل
توفر المصفوفة الجذرية JSON الصفوف. يصبح الكائن العادي صفًا واحدًا. يقوم الكائن الذي يحتوي مفتاحه الوحيد على مصفوفة بإلغاء تغليف المصفوفة ويحذر من أنه يستخدم الخاصية المسماة. لا يتم فك الكائنات التي تحتوي على مفاتيح شقيقة إضافية، لأن القيام بذلك سيؤدي إلى تجاهل تلك الأشقاء أو تكرارها.
تتم تسوية كل سجل محدد قبل تجميع الأعمدة. يمكن أن تكون السجلات عبارة عن عدديات داخل مصفوفة؛ هؤلاء يستخدمون عمود `value`. يتم رفض العددية المجردة في جذر المستند لأن سلسلة أو رقمًا واحدًا لا يحدد جدولًا يحتوي على سجلات وحقول.
اختيار السجلات من JSON: المصفوفات والكائنات المفردة وأغلفة المصفوفة ذات المفتاح الواحد
تظل أنواع JSON موجودة كنص خلية فقط. تصبح القيم المنطقية `true` و`false`، وتستخدم الأرقام عرضها العشري، وتصبح القيمة null خلية فارغة. لا يمكن لـ CSV التمييز بين تلك القيمة الخالية والسلسلة الفارغة، لذلك يحسب الكاتب القيم الخالية ويحذر من الغموض بدلاً من استدعاء النتيجة المكافئة.
تخضع الأعداد الصحيحة العريضة بالفعل للتحليل JSON قبل هذه المرحلة، لذلك قد تكون الأرقام الحرفية الرقمية غير الآمنة قد فقدت دقتها. يؤدي وضع المعرف بين علامتي اقتباس إلى الحفاظ على نصه. تتلقى السلاسل المشابهة للصيغة فاصلة عليا إضافية بشكل افتراضي عندما تبدأ بـ `=`، `+`، `-`، `@`، علامة التبويب أو حرف الإرجاع؛ يظل الرقم الفعلي `-5` رقمًا ولا يبدأ ببادئة.
لماذا لا يستطيع إخراج CSV الحفاظ على أنواع JSON
الأعمدة هي اتحاد المفاتيح المسطحة بترتيب المشاهدة لأول مرة. إذا كان أحد الصفوف يحتوي على `a` وآخر يحتوي على `b`، فإن الإخراج يحتوي على كل من الأعمدة والوسادات، وكل حقل مفقود به خلية فارغة. يشير التحذير إلى وجود صفوف ممزقة بدلاً من تغيير القيم تحت الرؤوس الخاطئة.
لا يتم تطبيق فرز مفاتيح الكائنات على CSV؛ قاعدة الكاتب هي الظهور الأول عبر السجلات. وهذا يجعل المثال مستقرًا لإدخال JSON الثابت، ولكنه ليس عقد مخطط. قم بترتيب مفاتيح المصدر بشكل متعمد أو قم بالمعالجة اللاحقة للرأس عندما يتطلب الاستيراد النهائي أمرًا محددًا.
تسوية البيانات المتداخلة - مسارات نقطية مثل address.city، والمصفوفات كأعمدة مفهرسة أو سلاسل متصلة، والنقطة التي لا يستطيع CSV عندها الاحتفاظ بالشكل
ترتبط مفاتيح الكائنات المتداخلة بنقطة: `address.city`. تستخدم المصفوفات نفس الفواصل والمؤشرات الرقمية: `tags.0`، `tags.1`. تحتفظ الكائنات والمصفوفات الفارغة بخلية واحدة فارغة في مسارها الخاص بدلاً من أن تختفي. ينتج عن هذا مستطيل مع الاعتراف بأنه تم إسقاط الشجرة في الأسماء.
يكون مفتاح المصدر الذي يحتوي بالفعل على نقطة غامضًا مع مسار متداخل. ToolAcre يكتشف ويحذر ولكنه لا يخترع صيغة هروب لا يمكن لجداول البيانات فهمها. يمكن أن تتجاوز المصفوفات العميقة أو الطويلة أيضًا الحد الأقصى للعمود 2,000، حيث يرفض التحويل بدلاً من إصدار جدول لا يمكن لبرنامج جداول البيانات العادي استخدامه.
مثال عملي: قائمة العملاء في كلا الاتجاهين - CSV إلى JSON، وتحرير حقل متداخل، وJSON العودة إلى CSV مع تسوية التداخل
استخدم `[ {"id":"0042","address":{"city":"Oslo"},"tags":["new","west"],"note":"=1+1"}, {"id":"0043","address":{"city":"Lima"},"tags":[],"note":null} ]`. تتضمن الرؤوس المعرف، address.city، والعلامات.0، والعلامات.1 والملاحظة. يتلقى الصف الثاني فراغات لمؤشرات العلامات الغائبة، ولا يمكن تمييز ملاحظته الخالية عن النص الفارغ.
تكون الملاحظة الأولى مسبوقة بفاصلة عليا بحيث يتعامل معها جدول البيانات كنص. تنتهي السجلات بـ CRLF، وتكون الحقول التي تحتوي على الفاصل أو الاقتباس أو نهاية السطر علامات اقتباس مزدوجة، ويتم مضاعفة علامات الاقتباس المضمنة. يؤدي تحديد الفاصلة المنقوطة أو علامة التبويب إلى تغيير المحدد؛ يمكن إضافة UTF-8 BOM اختياريًا للمستهلكين الذين يحتاجون إليه.
مثال عملي: تم تسوية مصفوفة عملاء متداخلة مرة واحدة في CSV
CSV مشوه أو مشفر بشكل غامض يقع خارج هذا المسار لأنه لم يدخل إليه CSV. يعد منظف CSV المكان المناسب لاختيار اللهجة أو اكتشافها وإصلاح الاقتباس. المصدر هنا صارم JSON ويتبع الإخراج اصطلاحات الكاتب الموثقة.
يقوم المحول أيضًا بوضع حد أقصى للإخراج عند 100,000 من الصفوف و2,000 من الأعمدة. يتم رفض المصفوفات الفارغة لأن الملف الذي لا يحتوي على رأس أو صف لا يحمل أي شكل جدول. هذه الحدود عبارة عن مسارات تعليمات برمجية مفروضة، وليست وعودًا بالأداء، ولا تخترع المقالة أرقام الإنتاجية.
الوجبات الجاهزة: CSV عبارة عن جدول، JSON عبارة عن شجرة - وكيف تتحرك لوحة محولات Syntax بينهما دون تحميل الصفوف
JSON عبارة عن شجرة مكتوبة؛ CSV عبارة عن جدول نصي. ToolAcre يختار الصفوف، ويسطح المسارات، ويوحّد الأعمدة، ويقتبس الحقول، ويحيّد النص الخطير، لكنه لا يستطيع الحفاظ على القيمة الخالية مقابل الفارغة أو إعادة بناء التداخل لاحقًا. هذه الخسائر هي ضوضاء هيكلية وليست تنسيقية.
استخدم هذا الاتجاه عندما يكون الإخراج على شكل جدول البيانات هو القطعة الأثرية المقصودة. إذا كنت بحاجة إلى CSV-to-JSON، فاختر قارئًا يسأل عن المحدد والرأس والأنواع. يعد رفض العكس أكثر أمانًا من إعادة JSON المقنعة المبنية على تخمينات لم تتم مراجعتها.