حوّلت رد API إلى CSV فخرج صف واحد فيه عشرات الأعمدة بدل صف لكل طلب، لماذا؟
لأن الرد كله كائن واحد يغلّف قائمة الطلبات، والأداة تكتب الكائن الواحد صفًا واحدًا، فتُسطّح الطلبات داخله إلى أعمدة مثل orders.0.id وorders.1.id. انسخ المصفوفة الداخلية فقط، من علامة [ حتى علامة ] المقابلة لها، فيصبح كل طلب صفًا.
شكل الرد الذي يسبب المشكلة
معظم واجهات المنصات لا ترجع قائمة الطلبات مباشرة، بل تضعها داخل كائن مع معلومات إضافية كعدد النتائج أو رقم الصفحة. مثال مختصر:
{"count":2,"orders":[{"id":1},{"id":2}]}
حوّلته الأداة فأعطت صفًا واحدًا بثلاثة أعمدة، مع ملاحظة تقول إن المدخل كائن واحد فكُتب صفًا واحدًا:
count,orders.0.id,orders.1.id
2,1,2
مع طلبين فقط تبدو المشكلة صغيرة. لكن ردًا فيه 50 طلبًا، في كل طلب عشرة حقول، يعطي صفًا واحدًا بمئات الأعمدة، وهذا ما رأيته.
الإصلاح: الصق القائمة وحدها
حين لصقنا المصفوفة الداخلية فقط:
[{"id":1},{"id":2}]
خرج صفان في عمود واحد اسمه id، أي صف لكل طلب كما هو متوقع.
- إن كان الرد طويلًا، الصقه أولًا في منسّق ومدقّق JSON ليُرتب بمسافات بادئة، فترى أين تبدأ قائمة الطلبات وأين تنتهي.
- انسخ من علامة [ التي بعد اسم القائمة، مثل "orders":، حتى علامة ] التي تغلقها.
- في محوّل CSV و JSON اختر «JSON إلى CSV» والصق ما نسخته.
- تأكد أن عدد الصفوف في الملخص يساوي عدد الطلبات.
ماذا تخسر حين تأخذ القائمة وحدها؟
تخسر الحقول التي كانت خارج القائمة، مثل count أو رقم الصفحة. هذه غالبًا معلومات عن الرد نفسه لا عن الطلبات، فلا تحتاجها في الجدول. أما إن كان فيها شيء تريده في كل صف، كاسم المتجر، فعليك أن تضيفه بنفسك في برنامج الجداول بعد التحويل، لأن الأداة لا تنسخ حقول الغلاف إلى كل صف.
حالات قريبة
- إن كان الرد مقسمًا على صفحات، فكل صفحة رد مستقل. حوّل قائمة كل صفحة ثم اجمع الملفات، أو اجمع القوائم في مصفوفة واحدة قبل التحويل.
- إن كانت القائمة داخل مستويين، مثل data ثم orders، فالمبدأ نفسه: انسخ المصفوفة التي عناصرها هي الطلبات.
- إن كان في كل طلب قائمة منتجات، فستواجه بعد ذلك مسألة الأعمدة المتعددة للمنتجات، ويمكنك اختيار «نص JSON في خلية واحدة» من «القيم المتداخلة» لتبقى منتجات كل طلب في خانة.
وتذكّر أن الأداة تقبل مصفوفة كائنات، أو مصفوفة مصفوفات، أو مصفوفة قيم بسيطة، أو كائنًا واحدًا. الكائن الواحد مقبول دائمًا، لكنه يعني صفًا واحدًا بالتعريف.
أسئلة شائعة
لماذا لا تكتشف الأداة القائمة الداخلية وحدها؟
لأن الكائن قد يحتوي أكثر من قائمة، ولا تستطيع الأداة أن تعرف أيها تقصد. لذلك تكتب ما تلصقه كما هو وتخبرك أنه كائن واحد.
هل أحتاج إلى برمجة لاستخراج القائمة؟
لا، النسخ من [ إلى ] يكفي. التنسيق المسبق يجعل ذلك أسهل.
هل تُرسل بيانات الطلبات إلى خادم؟
لا، التحويل يتم في متصفحك.
