نصف وظيفتي في أي منتج SaaS هي إخراج البيانات من النظام ووضعها في أيدي شخص لا يكتب التعليمات البرمجية. يريد المؤسس تسجيلات الشهر '؛ في جدول بيانات. يريد مسؤول الدعم فرز التذاكر في برنامج Excel. المحاسب يريد الطلبات باعتبارها .csv يمكنهم الدوران. تعيش البيانات مثل JSON، لأن هذا هو ما ترجعه واجهة برمجة التطبيقات، وفي كل مرة تكون المهمة هي نفسها: قم بتحويل هذه المجموعة من الكائنات إلى أعمدة وصفوف يمكن للإنسان فتحها. لقد سئمت من كتابة نصوص برمجية سريعة لها، وهذا هو بالضبط سبب استخدام Toolz محول JSON إلى CSV موجود. هذا الدليل هو كيف أفكر في هذا التحويل، بما في ذلك الأجزاء التي تعثر الناس.
ليرة تركية؛DR: يأخذ محول JSON إلى CSV مجموعة من الكائنات ويكتبها كصفوف مفصولة بفواصل، عمود واحد لكل خاصية، حتى يتمكن جدول البيانات من فتحها. الأجزاء الصلبة عبارة عن سجلات ذات حقول مختلفة وكائنات متداخلة وقيم تحتوي على فواصل. يقوم المحول الجيد ببناء الرأس من اتحاد جميع المفاتيح، ويمكنه تسوية الكائنات المتداخلة في أعمدة تدوين نقطي، ويهرب من الحقول لكل RFC 4180. تقوم أداة Toolz بجميع جوانب العميل الثلاثة، وتتيح لك اختيار المحدد ونهايات سطر CRLF بحيث يتم فتح الملف بشكل نظيف في Excel.
أنا أبني على Laravel وReact، لذا فإن JSON هو التنسيق الأصلي الخاص بي وCSV هي اللغة المشتركة التي أقوم بالتصدير إليها. الهندسة المثيرة للاهتمام ليست المسار السعيد حيث يكون لكل كائن نفس المفاتيح الثلاثة؛ إنها الحقيقة الفوضوية لبيانات الإنتاج، وهذا هو المكان الذي يفعل فيه معظم المحولين الشيء الخطأ بهدوء.
ما هو محول JSON إلى CSV؟
يقرأ محول JSON إلى CSV مصفوفة JSON من الكائنات وينتج جدولًا: تصبح أسماء الخصائص صف الرأس، ويصبح كل كائن صف بيانات واحدًا أسفله. الصق الاستجابة من نقطة نهاية API، أو استعلام قاعدة بيانات، أو مستند تم تصديره، وستحصل على ملف يمكنك فتحه مباشرة في Excel أو Google Sheets أو Numbers. إنه الجسر بين تبادل أجهزة التنسيق والتنسيق الذي يعمل به الأشخاص فعليًا.
الإدخال المثالي هو مجموعة من الكائنات المسطحة التي تشترك جميعها في نفس المفاتيح، لأن ذلك يتم تعيينها بشكل مثالي على جدول مستطيل. البيانات الحقيقية نادرا ما تكون مرتبة. تفتقد الكائنات حقلاً، وتتداخل القيم مع مستويين عميقين، وبعض الإدخالات عبارة عن صفائف وليست كميات قياسية. القيمة الكاملة للمحول المخصص هي أنه يحتوي على إجابة محددة ومعقولة لكل حالة من هذه الحالات بدلاً من إلقاء خطأ أو إسقاط البيانات. إذا تم تصغير JSON الخاص بك أو كنت تريد فقط فحصه أولاً، فقم بتشغيله عبر منسق JSON لطباعة جميلة والتحقق من صحتها قبل التحويل.
كيف يتعامل مع الكائنات ذات الحقول المختلفة؟
هذا هو أول ما يكسر المحولات الساذجة، وهو يستحق الفهم لأن إنتاج JSON لا يحتوي أبدًا على كائنات موحدة. لنفترض أن المصفوفة الخاصة بك تحتوي على كائن واحد id، name، و email، والتالي مع id، name، و phone. ما هي الأعمدة التي يجب أن تحتوي عليها CSV؟
الإجابة الصحيحة هي اتحاد كل مفتاح عبر جميع الكائنات، ويتم الاحتفاظ به بالترتيب الذي يظهر به كل مفتاح لأول مرة. لذلك يصبح الرأس id، name، email، phone، وأي كائن يفتقد أحد هذه المفاتيح يحصل ببساطة على خلية فارغة في هذا العمود. لا يتم إسقاط أي شيء، ويظل الجدول مستطيلًا. المحول البطيء الذي يقرأ مفاتيح الكائن الأول فقط سيفقد بصمت phone العمود بالكامل، مع أخذ كل رقم هاتف معه. يقوم محول Toolz بمسح جميع الصفوف لإنشاء الرأس، لذلك تظل السجلات غير المتساوية في جدول نظيف وكامل. هذا السلوك هو الفرق بين التصدير الذي يمكنك الوثوق به والذي يحذف البيانات التي لا يلاحظها أحد بهدوء إلا بعد فوات الأوان.
ماذا عن الكائنات والمصفوفات المتداخلة؟
JSON هي شجرة؛ CSV عبارة عن شبكة. يؤدي تسطيح أحدهما في الآخر إلى تباعد محولات المركز الثاني، ويعتمد الاختيار الصحيح على ما تخطط للقيام به مع الملف.
بالنسبة للكائنات المتداخلة، لديك خياران معقولان، والأداة تدعم كليهما. مع التسطيح، يتم توسيع الكائن المتداخل إلى أعمدة تدوين نقطية، لذلك { "address": { "city": "Paris", "zip": "75001" } } يصبح address.city عمود و address.zip عمود. هذا ما تريده عندما تكون الحقول المتداخلة عبارة عن بيانات حقيقية سيقرأها الشخص ويفرزها. مع التسطيح، تتم كتابة الكائن المتداخل بالكامل كسلسلة JSON مدمجة داخل خلية واحدة، وهو أفضل عندما تكون البنية معتمة وتحتاج فقط إلى الحفاظ عليها حرفيًا.
تحصل المصفوفات على اختيارها الخاص، لأنه لا توجد طريقة واحدة صحيحة للضغط على القائمة في خلية واحدة. يمكنك تخزين المصفوفة كـ JSON، مع الاحتفاظ بها ["a","b"] سليمة بحيث تكون في رحلات ذهابًا وإيابًا بشكل مثالي، أو يمكنك ضم العناصر بفاصل للحصول على قراءة أكثر للإنسان a; b. أستخدم JSON عندما تتم قراءة الملف مرة أخرى بواسطة برنامج وينال تنسيق الانضمام عندما يكون الشخص هو الجمهور وسهولة القراءة. ويلخص الجدول أدناه القرارات.
| شكل الإدخال | تتسطح على | تتسطح قبالة |
|---|---|---|
{"user":{"name":"Ada"}} |
عمود user.name = Ada |
عمود user = {"name":"Ada"} |
{"tags":["x","y"]} (المصفوفات مثل JSON) |
عمود tags = ["x","y"] |
عمود tags = ["x","y"] |
{"tags":["x","y"]} (انضمت المصفوفات) |
عمود tags = x; y |
عمود tags = x; y |
| كائن مفقود المفتاح | خلية فارغة في هذا العمود | خلية فارغة في هذا العمود |
لماذا تحتاج الفواصل والاقتباسات إلى الهروب؟
هذه هي القاعدة التي يتم تجاهلها وتنتج ملفًا يبدو جيدًا حتى يفتحه شخص ما وتكون الأعمدة كلها خاطئة. يستخدم CSV الفاصلة لفصل الحقول، فماذا يحدث عندما تحتوي القيمة على فاصلة؟ أو اقتباس مزدوج؟ أو فاصل سطر من ملاحظة متعددة الأسطر؟
RFC 4180أقرب شيء لدى CSV إلى المعيار، يجيب على هذا بدقة: أي حقل يحتوي على المحدد، أو علامة اقتباس مزدوجة، أو فاصل أسطر يجب أن يكون ملفوفًا بعلامات اقتباس مزدوجة، وأي علامة اقتباس مزدوجة داخل هذا الحقل يجب مضاعفتها. إذن القيمة Baker, Smith & Co. مكتوب كما "Baker, Smith & Co."، و She said "hi" يصبح "She said ""hi""". يطبق محول Toolz هذه القواعد على كل خلية تلقائيًا، ولهذا السبب يبقى العنوان أو السعر الذي يحتوي على فاصل الآلاف أو تعليق النص الحر في الرحلة إلى جدول بيانات كحقل واحد سليم بدلاً من التحطم إلى أعمدة إضافية.
كيف أجعل الملف مفتوحًا بشكل نظيف في برنامج Excel؟
قد تعتقد أن ملف CSV هو ملف CSV، لكن برنامج Excel على نظام التشغيل Windows يثير ضجة حول شيء واحد يجذب الأشخاص: نهايات الأسطر. إن الحصول على هذا الأمر بشكل صحيح هو الفرق بين الملف الذي يفتح بشكل مثالي والملف الذي تظهر فيه الصفوف مدمجة أو مقسمة.
يتوقع برنامج Excel على نظام التشغيل Windows أن ينتهي كل صف بإرجاع حرف النقل بالإضافة إلى تغذية السطر، زوج CRLF. إذا سلمته ملفًا بنهايات سطر LF على نمط Unix، فقد يخطئ في قراءة مكان انقطاع الصفوف، خاصة عندما يحتوي الحقل المقتبس على سطر جديد خاص به. يتيح لك المحول اختيار LF أو CRLF، لذا اختر CRLF عندما يكون الجمهور هو Excel على Windows وLF لمعظم الأدوات الأخرى ولأوراق Google، وهو سعيد بأي منهما. يمكنك أيضًا اختيار المحدد: الفاصلة هي الفاصلة الافتراضية، ولكن الفاصلة المنقوطة شائعة في اللغات الأوروبية حيث الفاصلة هي الفاصل العشري، وتكون علامة التبويب أو الأنبوب في متناول اليد عندما تكون بياناتك نفسها مليئة بالفواصل. مطابقة المحدد والخط المنتهي بالوجهة هو خيار مدته خمس ثوانٍ يوفر تذكرة الدعم لاحقًا.
هل من الآمن تحويل JSON الحساس عبر الإنترنت؟
نعم، لأنه لا شيء منه يترك متصفحك. كل جزء من التحويل، بدءًا من تحليل JSON وحتى الهروب من كل حقل وحتى الانضمام إلى الصفوف، يعمل في JavaScript على جهازك الخاص. لا يوجد تحميل ولا خادم، لذلك لا يتم نقل أي شيء أو تسجيله أو تخزينه. افتح علامة تبويب الشبكة وانقر فوق تحويل: لن ترى أي طلب يخرج، وبمجرد تحميل الصفحة، تعمل الأداة مع قطع اتصال الإنترنت.
هذه ليست تفاصيل بسيطة لـ JSON على وجه التحديد، لأن JSON هو ما تتحدث عنه استجابات واجهة برمجة التطبيقات والأنظمة الداخلية. قد يحتوي المصفوفة التي تقوم بتحويلها على سجلات المستخدم أو طلب البيانات أو رموز الوصول أو أي شيء آخر ترجعه الواجهة الخلفية. المحول الذي يشحن حمولتك إلى خادم بعيد يحول الاستجابة الخاصة إلى سطر سجل شخص آخر '؛s. إن القيام بالعمل من جانب العميل يعني أن البيانات تبقى في مكانها الصحيح. إنه الوضع الافتراضي لكل أداة على Toolz.dev، وإذا كنت تريد الحالة الكاملة لسبب أهمية هذه البنية، فقد قمت بوضعها في دليل خصوصية البيانات للأدوات عبر الإنترنت.
أين يتناسب هذا مع خط الأنابيب الحقيقي؟
يعد المحول في حد ذاته خطوة واحدة، ولكنه عادةً ما يكون القفزة الأخيرة لتدفق أطول، ويتوافق بشكل طبيعي مع عدد قليل من الأدوات الأخرى. الرحلة ذهابًا وإيابًا الأكثر شيوعًا في أسبوعي هي: تصدير JSON من واجهة برمجة التطبيقات، وتحريرها أو تصفيتها، وتحويلها إلى CSV، وتسليمها إلى شخص يعيش في جداول البيانات. عندما يرسلونها مرة أخرى مع التغييرات، أقوم بتحويل الاتجاه الآخر باستخدام محول CSV إلى JSON، الذي يوزع الملف لكل RFC 4180 ويستنتج الأنواع حتى أحصل على كائنات نظيفة مرة أخرى. الأداتان عبارة عن مرايا متعمدة لبعضهما البعض، ولهذا السبب تتشابكان.
قبل التحويل، غالبًا ما أرغب في رؤية البيانات كشبكة للتحقق من صحتها عارض CSV يعرض CSV كجدول قابل للفرز حتى أتمكن من تأكيد أن التصدير يبدو صحيحًا. وعندما لا تكون الوجهة جدول بيانات على الإطلاق، بل نظامًا آخر يتحدث لغة XML، فإن محول XML إلى JSON ونظيراتها تغطي تلك المحطة. نظرًا لأن كل واحدة منها تعمل محليًا، يمكنك ربطها على نفس الملف الخاص دون تحميل واحد. إذا كنت تقوم بتجميع مجموعة من الأدوات المفضلة لهذا النوع من الجدل حول البيانات، فأنا دليل مجموعة أدوات مطور الويب يغطي كيف أفكر في تجميع واحدة.
الأسئلة المتداولة
كيف أقوم بتحويل JSON إلى CSV؟
افتح ال محول JSON إلى CSV، الصق مصفوفة JSON من الكائنات في مربع الإدخال، وانقر فوق تحويل. تصبح مفاتيح الكائنات صف الرأس ويصبح كل كائن صف بيانات، ثم يمكنك نسخ ملف CSV أو تنزيله كـ .csv ملف لفتحه في جداول بيانات Excel أو Google. تتم جميع عمليات المعالجة في متصفحك، لذلك لا يتم تحميل أي شيء.
ما هي بنية JSON التي يتوقعها المحول؟
تعتبر مجموعة الكائنات مثالية، حيث يصبح كل كائن صفًا واحدًا. يتم أيضًا قبول كائن واحد ويصبح ملفًا من صف واحد. يتم وضع القيم التي ليست كائنات ضمن ملف value العمود حتى لا يضيع أي شيء، والأداة تحذرك عندما يحدث ذلك.
كيف يتعامل مع الكائنات ذات الحقول المختلفة؟ الرأس هو اتحاد كل مفتاح موجود عبر جميع الكائنات، ويتم الاحتفاظ به بالترتيب الذي يظهر به كل مفتاح لأول مرة. الكائن الذي يفتقد أحد هذه المفاتيح يحصل ببساطة على خلية فارغة في هذا العمود، لذلك لا تزال السجلات غير المتساوية تنتج جدولًا نظيفًا وكاملًا دون إسقاط أي بيانات.
كيف يتم التعامل مع الكائنات والمصفوفات المتداخلة؟
مع التسطيح، يتوسع الكائن المتداخل إلى أعمدة تدوين نقطية مثل address.city؛ مع إيقاف تشغيله، تتم كتابة الكائن كسلسلة JSON في خلية واحدة. يمكن تخزين المصفوفات كـ JSON للحفاظ عليها تمامًا، أو ضمها بفاصل لعمود أكثر قابلية للقراءة. اخترت لكل تحويل.
لماذا يجب أن أستخدم نهايات سطر CRLF لبرنامج Excel؟ يتوقع Microsoft Excel على نظام التشغيل Windows إرجاع السطر بالإضافة إلى تغذية السطر في نهاية كل صف. يؤدي اختيار CRLF إلى تجنب دمج الصفوف أو قراءتها بشكل خاطئ عند فتح الملف. بالنسبة لمعظم الأدوات الأخرى ولأوراق Google، يعمل LF بشكل جيد.
هل يتم الهروب من الفواصل والاقتباسات داخل القيم بشكل صحيح؟ نعم. بعد RFC 4180، يتم تغليف أي حقل يحتوي على المحدد أو علامة الاقتباس المزدوجة أو فاصل الأسطر بعلامات اقتباس مزدوجة، ويتم مضاعفة علامات الاقتباس الداخلية. وهذا يحتفظ بالعناوين والأوصاف والنصوص الحرة الأخرى كحقل واحد صالح بدلاً من التقسيم عبر الأعمدة.
هل من الآمن تحويل JSON الحساس؟ نعم. يتم تشغيل التحويل بالكامل بلغة JavaScript في متصفحك، ولا يحمل أي طلب شبكة بياناتك، ولا يتم تسجيل أي شيء أو تخزينه، ويعمل دون اتصال بالإنترنت بمجرد تحميله. JSON الذي يحتوي على مفاتيح API أو سجلات المستخدم أو المعرفات الداخلية لا يترك جهازك أبدًا.
هل يمكنني تحويل CSV مرة أخرى إلى JSON؟ نعم. ال محول CSV إلى JSON يعكس العملية، ويحلل الملف المفصول بفواصل مرة أخرى إلى مصفوفة JSON من الكائنات مع استنتاج النوع. يتيح لك التعثر الدائري نقل البيانات بين جداول البيانات وواجهات برمجة التطبيقات دون إعادة كتابتها يدويًا.



