تبدیل JSON به CSV

روی دستگاه شما اجرا می‌شود · فایل شما از دستگاهتان خارج نمی‌شود.

فایل .json را رها کنید یا JSON را مستقیم از پاسخ یک API بچسبانید و CSV بگیرید که در اکسل، Google Sheets یا هر صفحهٔ ورود داده باز می‌شود. فهرست سطح بالا هر مورد را یک سطر می‌کند؛ در غیر این صورت بلندترین فهرست رکوردها در سند به کار می‌رود، پس {"results": [...], "count": 2} برای هر نتیجه یک سطر می‌دهد؛ شیئی که هیچ فهرستی در آن نیست یک سطر می‌شود.

قواعد ثابت است تا نتیجه قابل پیش‌بینی باشد: اشیای تودرتو ستون‌های نقطه‌دار می‌شوند (address.city)، فهرست مقادیر ساده با نقطه‌ویرگول در یک سلول می‌آید، و فهرست اشیا داخل یک رکورد ستون‌های شماره‌دار می‌گیرد (items.0.name). سطر عنوان اجتماع همهٔ کلیدهاست به ترتیب اولین حضور؛ رکوردی که فیلدی ندارد فقط سلول خالی می‌گذارد.

CSV طبق RFC 4180 نوشته می‌شود (فیلدهای دارای ویرگول، گیومه یا خط جدید درست نقل‌قول می‌شوند)، با UTF-8 و نشانگر BOM اختیاری تا اکسل هر خط، اعراب و نمادی را درست نشان دهد. سلولی که با =، +، - یا @ شروع شود یک آپاستروف در ابتدایش می‌گیرد تا صفحه‌گسترده آن را متن نشان دهد، نه اینکه مثل فرمول اجرایش کند. ۲۰۰ خط اول را پیش از دانلود می‌بینید و چیزی از دستگاه شما بیرون نمی‌رود.

راهنمای تبدیل JSON به CSV

  1. فایل JSON را رها کنید یا JSON را در کادر بچسبانید.
  2. جداکنندهٔ ستون خروجی (پیش‌فرض ویرگول) و افزودن BOM اکسل را انتخاب کنید.
  3. روی «تبدیل به CSV» بزنید و پیش‌نمایش خط‌های اول را ببینید.
  4. فایل .csv را دانلود کنید.

قالب‌های پشتیبانی‌شده و محدودیت‌ها

ورودی
JSON (.json)؛ فایل یا متن چسبانده‌شده، UTF-8
خروجی
CSV، RFC 4180، UTF-8، پایان خط CRLF، BOM اختیاری
تودرتو
اشیا ← ستون نقطه‌دار؛ فهرست مقادیر ← با ; در یک سلول
جداکننده
ویرگول، نقطه‌ویرگول، تب یا خط عمودی
محل اجرا
در مرورگر – بدون آپلود

مناسب نیست برای: یک شیء عمیقاً تودرتو بدون هیچ فهرستی: تبدیل می‌شود، اما به‌صورت یک سطر بسیار پهن، نه یک جدول.

کدام فهرست سطرها می‌شود

فهرست سطح بالا خودش سطرهاست. در غیر این صورت ابزار تا هشت سطح در عمق سند می‌گردد تا بلندترین فهرست اشیا را پیدا کند. پس {"response": {"data": {"items": [...]}}} و {"results": [...], "count": 2, "next": null} هر دو برای هر مورد یک سطر می‌دهند و سطر زیر نتیجه نام فهرستی را که به کار رفته می‌گوید، مثلاً results. مقدارهای کنار آن فهرست، مثل count و next، جزو هیچ رکوردی نیستند و کنار گذاشته می‌شوند.

از دو فهرست هم‌اندازه، آن‌که به بالای سند نزدیک‌تر است برنده می‌شود. برای فهرستی کوتاه‌تر، آن را از [ تا ] کپی کنید و فقط همان را بچسبانید. سندی که هیچ فهرستی از اشیا ندارد یک سطر می‌شود و پوشش‌هایی که فقط یک کلید دارند رد می‌شوند؛ پس {"order": {"id": 7, "total": 12}} ستون‌های id و total را می‌دهد.

مقدارها چطور در خانه‌ها نوشته می‌شوند

متن دقیقاً کپی می‌شود، از جمله تاریخ‌ها که به همان شکلی می‌مانند که در JSON آمده‌اند، مثل 2024-01-05T10:00:00Z. true و false به‌صورت همین کلمه‌ها نوشته می‌شوند. null، فهرست خالی و شیء خالی همه خانهٔ خالی می‌شوند؛ پس در CSV با فیلدی که اصلاً نبوده یکسان به نظر می‌رسند.

عدد دقیقاً همان‌طور نوشته می‌شود که در JSON آمده: 1.0 همان 1.0 می‌ماند، 1e21 همان 1e21، و شناسه‌ای مثل 12345678901234567890 حتی بدون گیومه همهٔ رقم‌هایش را نگه می‌دارد. یک خوانندهٔ معمولی JSON آن شناسه را به 12345678901234567000 تبدیل می‌کرد.

فهرست درون فهرست، و کلیدهایی که خودشان نقطه دارند

فهرستی از فهرست‌ها یک سطح باز می‌شود: "m": [[1, 2], [3]] ستون m.0 با مقدار 1;2 و ستون m.1 با مقدار 3 می‌دهد. فهرستی که اشیا و مقدارهای ساده را با هم دارد همهٔ اعضایش را شماره می‌زند، پس "x": [{"z": 1}, 2] ستون‌های x.0.z و x.1 را می‌دهد.

نام ستون‌ها با پیوستن کلیدها با نقطه ساخته می‌شود، پس کلیدی که خودش نقطه دارد ممکن است با کلیدی تودرتو برخورد کند: {"a.b": 1, "a": {"b": 2}} دو بار a.b می‌ساخت. دومی پسوندی می‌گیرد، پس ستون‌ها a.b و a.b_2 هستند و هر دو مقدار حفظ می‌شوند.

انتخاب جداکننده، و خانه‌هایی که با = شروع می‌شوند

کاما انتخاب معمول است. نقطه‌ویرگول به صفحه‌گسترده‌ای می‌آید که روی زبانی تنظیم شده که اعشار را با ویرگول می‌نویسد؛ آنجا فایل کاماجدا اغلب در یک ستون باز می‌شود. تب و خط عمودی برای سامانه‌هایی است که آن‌ها را می‌خواهند. جداکننده هرچه باشد، پسوند فایل .csv است.

خانه‌ای که با =، +، - یا @ شروع شود برای صفحه‌گسترده فرمول است و هنگام باز شدن اجرا می‌شود. چنین خانه‌ای یک آپاستروف در ابتدا می‌گیرد، همان نشانه‌ای که خود صفحه‌گسترده‌ها برای «این متن است» به کار می‌برند؛ پس =1+1 به شکل '=1+1 نوشته می‌شود. عددهای ساده مثل -5 یا +3.5 همان‌طور می‌مانند.

پرسش‌های متداول

با اشیا و آرایه‌های تودرتو چه می‌شود؟
شیء تودرتو به ستون‌های نقطه‌دار باز می‌شود: {"address":{"city":"Tehran"}} ستونی به نام address.city می‌شود. فهرست مقادیر ساده ("tags": ["a","b"]) به‌صورت a;b در یک سلول نوشته می‌شود. فهرست اشیا داخل یک رکورد ستون‌های شماره‌دار مثل items.0.name و items.1.name می‌گیرد.
آیا فایل من به سرور فرستاده می‌شود؟
نه. تبدیل به‌طور کامل در مرورگر و با توان دستگاه خودتان انجام می‌شود و فایل از رایانه یا گوشی شما بیرون نمی‌رود. هر ابزار پس از یک بار استفاده، بدون اینترنت هم کار می‌کند (ابزارهای ویدیو، تشخیص متن و حذف پس‌زمینه بار اول موتورشان را از همین سایت می‌گیرند).
JSON من شیء است، نه فهرست؛ چه می‌گیرم؟
بلندترین فهرست رکوردها در هر جای آن سطرها می‌شود ({"results": [...], "count": 2, "next": null} برای هر نتیجه یک سطر می‌دهد) و خط نتیجه نام فهرستی را که به کار رفته می‌گوید. مقدارهای کنار آن فهرست جزو هیچ رکوردی نیستند و کنار گذاشته می‌شوند. شیئی که هیچ فهرستی در آن نیست به‌صورت یک سطر با یک ستون برای هر کلید نوشته می‌شود.
چرا اکسل حروف عجیب نشان می‌دهد و چطور درستش کنم؟
اکسل کدگذاری را حدس می‌زند مگر اینکه فایل با نشانگر BOM شروع شود. گزینهٔ «افزودن BOM برای اکسل» به‌طور پیش‌فرض روشن است و آن نشانگر سه‌بایتی را اضافه می‌کند؛ برای ابزارهایی که UTF-8 خالص می‌خواهند خاموشش کنید.

ابزارهای مرتبط

بیشتر در صفحه‌گسترده و داده

این صفحه به زبان‌های دیگر: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · اردو · Bahasa Indonesia · বাংলা