محول JSON إلى CSV

الصق مصفوفة JSON من الكائنات على اليمين، احصل على CSV مع علامات اقتباس مناسبة على اليسار. صف العناوين من المفاتيح. بدون رفع.

  1. الصق مصفوفة JSON من الكائنات في منطقة النص على اليسار.
  2. انقر «التحويل إلى CSV». يُبنى صف العناوين من اتحاد مفاتيح الكائنات.
  3. انسخ النتيجة أو نزّلها كـ data.csv.
  4. للقيم المتداخلة، يُحوَّل الحقل إلى سلسلة JSON — سطّحها مسبقًا إذا أردت أعمدة مسطحة.
ماذا تفعل؟

يحوّل مصفوفة JSON من الكائنات إلى CSV بصيغة RFC 4180. صف العناوين هو اتحاد جميع مفاتيح الكائنات. القيم تُغلَّف بعلامات اقتباس CSV عندما تحتوي فواصل أو علامات اقتباس أو أسطرًا جديدة. الأرقام والقيم المنطقية تُكتب بدون اقتباس؛ null و undefined تصبح حقولًا فارغة. القيم المتداخلة (كائنات، مصفوفات) تُحوَّل إلى سلسلة JSON في حقل واحد مغلَّف بعلامات اقتباس — لا يمكن لـ CSV تمثيل التسلسل الهرمي بشكل أصلي.

مثال

مدخل JSON:

[
  {"name":"Ada","age":36,"role":"engineer"},
  {"name":"Grace","age":40,"role":"scientist"}
]

مخرج CSV:

name,age,role
Ada,36,engineer
Grace,40,scientist

مزالق شائعة من JSON إلى CSV

CSV صيغة مسطحة. معظم المخرجات «الغريبة» تأتي من أشكال JSON التي لا تملك تمثيلًا مسطحًا.

  • الجذر ليس مصفوفة. كائن JSON مثل `{"a":1,"b":2}` لا يتحول مباشرة إلى CSV — لُفّه في مصفوفة: `[{"a":1,"b":2}]`. سيكون لـ CSV صف عناوين واحد وصف بيانات واحد.
  • مفاتيح غير متجانسة بين الصفوف. إذا كان الكائن الأول `{a,b}` والثاني `{a,c}`، فالعنوان `a,b,c` (الاتحاد). الصفوف التي تفتقد مفتاحًا تنتج حقلًا فارغًا. عالج مسبقًا إن أردت مخططًا أكثر صرامة.
  • تسطيح صامت للقيم المتداخلة. حقل مثل `{"address":{"city":"NY"}}` يصبح عمود CSV واحدًا قيمته سلسلة JSON `{"city":"NY"}`. للحصول على عمودي `address.city` منفصلين، سطّح في JavaScript أولًا: `{address_city: row.address.city}`.
  • أسطر جديدة داخل القيم. سلسلة متعددة الأسطر داخل قيمة JSON تصبح حقل CSV مغلَّفًا بعلامات اقتباس مع أحرف `\n` حرفية بين الاقتباس. معظم تطبيقات الجداول تتعامل معها بشكل صحيح؛ بعض الأدوات القديمة لا.
  • محارف خاصة في العناوين. مفاتيح JSON بفواصل أو اقتباس أو أسطر جديدة تعمل لكنها تنتج صف عناوين قد تخفق بعض مستهلكات CSV في تحليله. أعِد تسمية المفاتيح إلى أحرف وأرقام وشرطة سفلية قبل التحويل إن احتجت أقصى توافق.
  • فاصلة زائدة في JSON. `[{"a":1},]` JSON غير صالح (فاصلة بعد العنصر الأخير). يرفضها المحلِّل قبل خطوة CSV. معظم أدوات تنسيق JSON تزيلها — مرر النص عبر `/json-prettifier` عند الحاجة.
الأسئلة الشائعة

كيف أحصل على مخرج مفصول بعلامة تبويب (TSV)؟

تنتج هذه الصفحة CSV بفواصل. للحصول على TSV استبدل `,` بـ `\t` في النتيجة، أو شغّل PapaParse مع `delimiter: "\t"` من سطر الأوامر — نفس المكتبة.

هل يُحفظ ترتيب المفاتيح في صف العناوين؟

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

كيف تُعالَج التواريخ؟

لا يحوي JSON نوع Date أصليًا — التواريخ عادةً مُسلسَلة بالفعل كسلاسل ISO 8601. تمر دون تغيير. إذا جاء JSON من JSON.stringify لكائن Date، فقد حُوِّل إلى سلسلة ISO عند تلك المرحلة.

هل يمكنني الذهاب JSON → CSV → JSON والعودة؟

لبيانات مصفوفة من كائنات مسطحة، نعم. تبقى السلاسل سلاسل والأرقام أرقامًا (مع التحويل الديناميكي لـ PapaParse عند الاستيراد). تفقد القيم المتداخلة بنيتها على جانب CSV وتعود كحقول سلسلة JSON لا ككائنات متداخلة مرة أخرى.

هل يُرفَع JSON الخاص بي؟

لا. كل شيء يعمل في متصفحك — يُحلَّل JSON ويُحوَّل بـ JavaScript على هذه الصفحة ولا يُرسَل إلى أي خادم. تحقَّق في أدوات المطوّر بالمتصفح.

ما حجم JSON الذي يمكنني تحويله؟

حتى نحو 50 ميغابايت قبل أن تصبح منطقة نص المتصفح بطيئة. التحويل نفسه يتسع خطيًا مع حجم المدخل؛ العائق هو العرض. للملفات الأكبر شغّل PapaParse من سطر الأوامر.