تخطي إلى المحتوى

محول CSV إلى JSON - أداة تحويل ملفات مجانية عبر الإنترنت

أداة مجانية لتحويل ملفات CSV إلى JSON أو العكس. تتم المعالجة داخل متصفحك مباشرة، فلا تغادر بياناتك جهازك أبداً ولا تصل إلى أي خادم خارجي، بما يضمن الخصوصية.

محول ملفات CSV/JSON

قم بالتحويل بين صيغ CSV وJSON بسهولة. قم بتحميل الملف، ومعاينة البيانات، وتنزيل النتيجة المحولة.

محول CSV إلى JSON

محول JSON إلى CSV

حاسبة التحميل...
📚

التوثيق

ما هو محوّل CSV إلى JSON؟

محوّل CSV إلى JSON هو أداة تغيّر البيانات من تنسيق CSV (القيم المفصولة بفواصل) إلى تنسيق JSON (ترميز كائنات JavaScript)، أو بالعكس. تعمل هذه الأداة بالكامل داخل متصفح الويب. ولا ترسل الملف المُحمّل إلى خادم مطلقًا، لذلك تبقى البيانات على جهاز المستخدم.

CSV هو تنسيق نصي عادي يُستخدم لتخزين الجداول، مثل جداول البيانات المُصدّرة من Excel أو Google Sheets. أما JSON فهو تنسيق نصي مبني من أزواج المفتاح والقيمة، ويُستخدم على نطاق واسع لنقل البيانات بين تطبيقات الويب وواجهات برمجة التطبيقات. ولأن التنسيقين ينظمان البيانات بطرق مختلفة، فإن التحويل بينهما يتطلب مجموعة محددة من القواعد الموضحة أدناه.

كيفية تحويل CSV إلى JSON

  1. انقر على «تحميل ملف CSV» واختر ملفًا بامتداد .csv من الجهاز.
  2. تعرض الأداة معاينة لمحتوى الملف الخام.
  3. انقر على «تحويل إلى JSON». تقرأ الأداة السطر الأول باعتباره عناوين الأعمدة، وتحول كل سطر آخر إلى كائن JSON واحد.
  4. تظهر النتيجة في معاينة الإخراج، منسقة بمسافات بادئة.
  5. انقر على «تنزيل JSON» لحفظه كملف بامتداد .json، أو على «نسخ JSON» لنسخ النص.

كيفية تحويل JSON إلى CSV

  1. انقر على «تحميل ملف JSON» واختر ملفًا بامتداد .json. يجب أن يحتوي الملف على مصفوفة JSON من الكائنات، مثل [{"Name":"Ann"},{"Name":"Bo"}].
  2. تعرض الأداة معاينة لنص JSON الخام.
  3. انقر على «تحويل إلى CSV». تجمع الأداة كل مفتاح مستخدم في جميع الكائنات، وتحول كل مفتاح إلى عمود.
  4. تظهر النتيجة في معاينة الإخراج كنص CSV.
  5. انقر على «تنزيل CSV» لحفظه كملف بامتداد .csv، أو على «نسخ CSV» لنسخ النص.

لا توجد حدود للتحميل يفرضها خادم، لأن البيانات لا تغادر المتصفح. ومع ذلك، قد يؤدي ملف كبير جدًا إلى إبطاء علامة تبويب المتصفح، إذ يُحتفظ بالملف بأكمله في الذاكرة أثناء تحويله.

قواعد تحويل CSV إلى JSON

تقرأ الأداة الصف الأول من الملف باعتباره أسماء الأعمدة. ويصبح كل صف تالٍ كائن JSON واحدًا، مع استخدام أسماء الأعمدة مفاتيحَ له. إذا احتوى صف على قيم أكثر من عدد العناوين، تُنشأ مفاتيح إضافية تُسمّى وفق موضعها المطلق في الصف؛ فمع وجود 3 عناوين، تُسند إلى القيمة الرابعة المفتاح field_4، وإلى القيمة الخامسة المفتاح field_5، وهكذا، ولذلك لا تُحذف أي بيانات. وإذا احتوى الصف على قيم أقل، تُستخدم سلاسل فارغة للمفاتيح المفقودة. وإذا كان لعناوين اثنين الاسم نفسه، يُعاد تسمية الثاني بإضافة لاحقة؛ فتصبح a, a المفتاحين a وa_2.

تتبع الأداة قواعد CSV المحددة في RFC 4180، وهو المعيار التقني لهذا التنسيق. ولا تُعامل الفاصلة داخل حقل على أنها قيمة ضمن ذلك الحقل، لا فاصلًا بين الأعمدة، إلا إذا كان الحقل محاطًا بعلامتي اقتباس مزدوجتين، مثل "Smith, John". ويُحتفظ بفاصل السطر داخل علامات الاقتباس باعتباره جزءًا من القيمة، لا صفًا جديدًا. وتمثل علامتا الاقتباس المزدوجتان داخل حقل مقتبس علامة اقتباس حرفية واحدة.

لا يتعرف البرنامج إلا على الفواصل باعتبارها فواصل للأعمدة؛ ولا يكتشف الفواصل المنقوطة أو علامات الجدولة أو غيرها من الفواصل، ولا يدعمها.

تُفحص كل قيمة وتُحوّل إلى نوع:

  • تتحول القيمة المكتوبة كعدد عادي، مثل 42 أو -3.5، إلى عدد JSON.
  • يتحول النص true أو false، بأي حالة لأحرفه، إلى قيمة منطقية في JSON.
  • يبقى أي شيء آخر سلسلة JSON، بما في ذلك الخلايا الفارغة التي تتحول إلى سلاسل فارغة.
  • يبقى العدد ذو الصفر البادئ، مثل 00512، سلسلة نصية، لأن الصفر البادئ يكون ذا دلالة غالبًا، كما في الرمز البريدي أو رقم المعرّف.
  • لا يُقبل العدد إلا إذا أدت إعادة كتابته إلى النص نفسه تمامًا. وعادةً ما تفشل الأعداد الصحيحة الطويلة التي تتجاوز 9,007,199,254,740,991، وهو أكبر عدد صحيح يمكن لعدد JavaScript الاحتفاظ به بدقة تامة، في هذا الفحص وتبقى سلاسل نصية، وبذلك لا تُفقد أي أرقام.
  • تُحفظ القيمة التي أحاطها الملف بعلامات اقتباس دائمًا كسلسلة نصية، حتى إن بدت كعدد، لأن الاقتباس يُعامل على أنه تحديد من مؤلف الملف لها كنص.

تُتخطى الأسطر الفارغة في الملف ولا تنتج كائنات فارغة.

قواعد تحويل JSON إلى CSV

تفحص الأداة كل كائن في المصفوفة، وتجمع المجموعة الكاملة للمفاتيح المستخدمة في جميع الكائنات. وتصبح هذه المفاتيح عناوين أعمدة CSV، بالترتيب الذي ظهرت به أول مرة. وإذا كان أحد الكائنات يفتقد مفتاحًا موجودًا في كائن آخر، تُترك خليته فارغة بدلًا من حدوث خطأ.

لا يحوّل JSON إلى CSV الكائنات المتداخلة إلى أعمدة منفصلة. فالقيمة التي تكون كائنًا أو مصفوفة تُكتب مجددًا كنص JSON داخل خلية واحدة؛ لذلك تتحول {"b": 1} إلى الخلية {"b":1}، وتتحول [1, 2] إلى الخلية [1,2]. لا تُفقد أي بيانات، لكن الجزء المتداخل يبقى في عمود واحد بدل تقسيمه. ويجب تسطيح JSON المتداخل يدويًا أولًا إذا كان كل جزء يحتاج إلى عموده الخاص.

تنتج القيمة null، وكذلك المفتاح الموجود في أحد الكائنات والمفقود في كائن آخر، خلية فارغة.

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

يجب أن يكون إدخال JSON مصفوفة، وأن يكون كل عنصر فيها كائنًا. ويؤدي وجود عدد أو سلسلة نصية أو null أو مصفوفة متداخلة بدلًا من الكائن إلى الخطأ «يجب أن يكون JSON مصفوفة من الكائنات». وتؤدي المصفوفة الخالية تمامًا من العناصر إلى الخطأ «مصفوفة JSON فارغة. أضف كائنًا واحدًا على الأقل للتحويل». أما الملف المُحمّل الخالي تمامًا من المحتوى فيؤدي إلى الخطأ «الملف المُحمّل فارغ».

مثال محلول

ملف CSV الأصلي:

1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4

يؤدي تحويله إلى JSON إلى:

1[
2  {
3    "Name": "Ann Lee",
4    "Age": 29,
5    "Member": true
6  },
7  {
8    "Name": "Bo, Jr.",
9    "Age": 7,
10    "Member": false
11  }
12]
13

لاحظ أن "Bo, Jr." احتفظ بفاصلته لأن الحقل كان مقتبسًا في الملف الأصلي، وأن Age وMember تحولا إلى عدد وقيمة منطقية.

يؤدي تحويل JSON نفسه مجددًا إلى CSV، مع إضافة صف تكون فيه قيمة Age مفقودة، إلى:

1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4Cy Tan,,true
5

تصبح قيمة Age المفقودة خلية فارغة، وتؤدي الفاصلة في "Bo, Jr." إلى إحاطة الحقل بعلامات اقتباس مجددًا عند الإخراج.

الاستخدامات الشائعة

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

توفر مكتبات البرمجة التحويل نفسه للمهام الأكبر أو المتكررة، مثل وحدتي csv وjson في Python، أو pandas. وتتولى أدوات سطر الأوامر مثل csvkit وjq التحويل والتصفية من الطرفية. تناسب هذه الخيارات معالجة الدفعات، بينما تناسب أداة المتصفح ملفًا لمرة واحدة دون تثبيت أي شيء.

الأسئلة الشائعة

هل يُرسل الملف المُحمّل إلى خادم؟ لا. يعمل التحويل باستخدام JavaScript داخل علامة تبويب المتصفح. ويُقرأ الملف من الجهاز المحلي ولا يُنقل مطلقًا.

هل تدعم الأداة فواصل غير الفاصلة، مثل الفاصلة المنقوطة أو علامة الجدولة؟ لا. يقرأ الإصدار الحالي القيم المفصولة بفواصل فقط. ويجب تحويل الملف الذي يستخدم فاصلًا مختلفًا إلى صيغة مفصولة بفواصل أولًا، مثل استبدال الفاصل في محرر نصوص.

لماذا بقي عدد مثل 00512 سلسلة نصية في ناتج JSON؟ تكون الأصفار البادئة ذات دلالة عادةً، كما في الرمز البريدي، لذلك تحتفظ الأداة بالقيمة كسلسلة نصية بدل تحويلها إلى العدد 512، الأمر الذي كان سيحذف الصفر.

ماذا يحدث إذا حوّلت JSON يحتوي على كائنات متداخلة؟ يُكتب الكائن المتداخل كنص JSON في خلية واحدة، مثل {"b":1}. وتبقى البيانات، لكنها لا تُقسّم إلى أعمدة منفصلة. يجب تسطيح البيانات المتداخلة أولًا إذا كان كل حقل يحتاج إلى عموده الخاص.

ماذا يحدث إذا لم يكن JSON لديّ مصفوفة من الكائنات؟ تعرض الأداة خطأ ولا تحوّل شيئًا. يجب أن يكون الإدخال مصفوفة JSON يكون كل عنصر فيها كائنًا، مثل [{"a":1},{"a":2}].

هل يجب أن يكون الصف الأول من ملف CSV صف عناوين دائمًا؟ نعم. تتعامل الأداة دائمًا مع الصف الأول باعتباره أسماء الأعمدة. وسيُقرأ الصف الأول من البيانات خطأً على أنه عناوين إذا خلا الملف من صف عناوين.

المراجع

  1. Shafranovich، Y. "Common Format and MIME Type for Comma-Separated Values (CSV) Files." RFC 4180، IETF، أكتوبر 2005. https://www.rfc-editor.org/rfc/rfc4180
  2. Bray، T.، محرر. "The JavaScript Object Notation (JSON) Data Interchange Format." RFC 8259، IETF، ديسمبر 2017. https://www.rfc-editor.org/rfc/rfc8259
  3. "Working with JSON." مستندات MDN للويب، Mozilla. https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON