تبدیل JSON به CSV چیست؟
JSON (نشانهگذاری اشیاء JavaScript، RFC 8259) یک فرمت متنی درختشکل برای دادههای ساختاریافته است؛ CSV (مقادیر جداشده با کاما، RFC 4180) یک فرمت متنی مسطح و جدولی است. تبدیل JSON به CSV آن درخت را به سطرها و ستونها تسطیح میکند تا مجموعه دادهای که از یک پاسخ API آمده مستقیماً در یک صفحهگسترده باز شود بدون اینکه یک سطر دوباره تایپ شود.
تبدیل JSON به CSV چگونه کار میکند؟
هر تبدیل بهصورت محلی در مرورگر شما اجرا میشود. مراحل کلی عبارتند از:
JSON.parseورودی را اعتبارسنجی میکند و تأیید میکند که یک آرایه سطحبالا از رکوردها است. اگر براکتها، کاماها یا کلیدهای نقلقولی درست نباشند، خطای واضحی نمایش داده میشود.- نویسنده ستونهای سرآیند را از رکوردهایتان استخراج میکند: یا اجتماع همه کلیدهای دیدهشده، یا فقط کلیدهای رکورد اول — به انتخاب شما.
- اشیاء تودرتو به کلیدهای نقطهدار تسطیح میشوند (
user.id،user.city) یا بهصورت یک سلول JSON سریالسازی میشوند، به انتخاب شما. آرایههای داخل اشیاء همیشه JSON-stringify میشوند. - هر سلول طبق RFC 4180 escape میشود: هر مقداری که حاوی جداکننده، نقلقول مضاعف یا خط جدید باشد در نقلقول قرار میگیرد و نقلقولهای داخلی دوتایی میشوند. سطرها با
پایان مییابند. - خروجی CSV به textarea فقط خواندنی نوشته میشود و یک لینک دانلود یک
Blobبا نوع MIME صحیح (text/csv;charset=utf-8) میسازد تا بتوانید فایل را با یک کلیک ذخیره کنید.
چرا JSON را با این ابزار به CSV تبدیل کنیم؟
- حریم خصوصی: هر مرحله تجزیه، تسطیح و نوشتن بهصورت محلی در مرورگر شما اجرا میشود. دادهها هرگز به سرورهای ما نمیرسند.
- صحت: نویسنده از RFC 4180 پیروی میکند. مقداری مانند
Bob, Jr.بهصورت"Bob, Jr."درمیآید — یک سلول نقلقولی نه دو ستون — و خطوط جدید و نقلقولهای تعبیهشده در طول فرآیند سالم میمانند. - آماده برای صفحهگسترده: خروجی مستقیماً در Excel یا Google Sheets paste میشود با ستونهای سرآیند که از کلیدهایتان استخراج شدهاند، بنابراین قبل از اینکه دادهها قابل استفاده باشند نیاز به پاکسازی دستی نیست.
- انعطافپذیری: بین تسطیح و stringify برای اشیاء تودرتو جابجا شوید، هر جداکنندهای را برای dialectهای CSV غیر کاما انتخاب کنید، و تعیین کنید که آیا سرآیندها از همه کلیدها باشند یا فقط رکورد اول.
کاربردهای رایج تبدیل JSON به CSV چیست؟
تسطیح JSON به CSV در سراسر کار داده و ابزارسازی ظاهر میشود:
- صادرات داده: تبدیل یک پاسخ API به یک فایل CSV که تیم مالی، عملیاتی یا محصول شما میتواند در Excel یا Google Sheets بدون نوشتن کد باز کند.
- گزارشدهی: قرار دادن نتیجه یک کوئری JSON در یک صفحهگسترده برای یک جدول محوری، نمودار یا ستونی از فرمولها. این نوع کار روی JSON خام دردناک است.
- بازبینی صفحهگسترده: تسطیح یک تنظیم JSON تودرتو (تنظیمات، پرچمهای ویژگی، متغیرهای A/B) به CSV تا بازبینیکنندگان غیرتکنیکال بتوانند سلول به سلول بخوانند و ویرایش کنند.
مثال تبدیل JSON به CSV چگونه است؟
[{"name":"Alice","age":30},{"name":"Bob, Jr.","age":25}] را الصاق کنید، جداکننده را روی کاما بگذارید، و CONVERT را بزنید. سه خط دریافت میکنید: یک ردیف سرآیند name,age، یک ردیف داده Alice,30، و یک ردیف "Bob, Jr.",25. کاما تعبیهشده دقیقاً همان چیزی است که یک join ساده را خراب میکند — اینجا نقلقول RFC 4180 فعال میشود تا سلول کامل بماند.
آیا این مبدل JSON به CSV کاملاً در مرورگر من اجرا میشود؟
بله. هر مرحله تجزیه، تسطیح و نوشتن بهصورت محلی بهعنوان JavaScript داخل تب مرورگر شما اجرا میشود. ابزار اصلاً fetch، XMLHttpRequest یا navigator.sendBeacon را فراخوانی نمیکند — payload های JSON شما هرگز به سرورهای ما، یک مبدل شخص ثالث یا هیچ pipeline تحلیلی نمیرسند. ابزار همچنین پس از بارگذاری صفحه بهصورت آفلاین کار میکند، چون یک bundle HTML/CSS/JS استاتیک بدون وابستگی API زمان اجرا است.
حداکثر اندازه ورودی که این مبدل میتواند مدیریت کند چقدر است؟
مبدل کل ورودی را در حافظه buffer میکند و بهصورت همزمان روی thread اصلی اجرا میشود، بنابراین محدودیتهای عملی به دستگاه شما بستگی دارند. ورودیهایی تا حدود ۱۰ مگابایت JSON (تقریباً ۱۰۰,۰۰۰ ردیف معمولی) بدون مکث قابل توجه روی یک لپتاپ مدرن تبدیل میشوند. فراتر از آن UI ممکن است در حین اجرای نویسنده مسدود شود. تبدیل جریانی با استفاده از Web Worker بهعلاوه یک نویسنده chunk شده یک follow-up برنامهریزیشده است — برای حال، مجموعه دادههای بسیار بزرگ را قبل از الصاق تقسیم کنید.
نویسنده چگونه مقادیر حاوی کاما، نقلقول یا خطوط جدید را مدیریت میکند؟
طبق RFC 4180. هر مقداری که حاوی جداکننده فعال، نقلقول مضاعف، CR یا LF باشد در نقلقول مضاعف قرار میگیرد و نقلقولهای داخلی دوتایی میشوند. بنابراین نامی مانند Bob, Jr. به سلول واحد "Bob, Jr." تبدیل میشود نه دو ستون، و یک توضیح چندخطی در یک سلول میماند بدون اینکه ردیف شکسته شود. این دقیقاً جایی است که join(',') ساده اشتباه میکند.
هنگام تبدیل به CSV با اشیاء JSON تودرتو چه اتفاقی میافتد؟
اشیاء تودرتو بر اساس تغییر حالت اشیاء تودرتو مدیریت میشوند. در حالت تسطیح (پیشفرض)، کلیدها با نقطه متصل میشوند — {"user":{"id":1,"city":"Paris"}} به ستونهای user.id و user.city تبدیل میشود. در حالت Stringify، شیء تودرتو بهعنوان یک مقدار سلول JSON واحد با escape کردن نقلقول RFC 4180 سریالسازی میشود و ساختار آن برای رفتوبرگشت حفظ میشود. آرایههای داخل اشیاء در هر دو حالت JSON-stringify میشوند.
کدام جداکنندهها را خروجی CSV میتواند استفاده کند؟
چهار: کاما (,، پیشفرض RFC 4180)، سمیکولون (;، رایج در محلیهای اروپایی)، tab (\t، dialect TSV)، و pipe (|). آنچه ابزار downstream شما انتظار دارد را انتخاب کنید. نویسنده هر سلولی که حاوی جداکننده انتخابی است را escape میکند، بنابراین انتخاب هرگز مقداری را خراب نمیکند.
این مبدل JSON به CSV آرایه شما را تسطیح میکند و خروجی سازگار با RFC 4180 تولید میکند که میتوانید مستقیماً در یک صفحهگسترده، گزارش یا بازبینی کد paste کنید — بدون آپلود یک بایت. جهت مخالف نیاز دارید؟ مبدل CSV به JSON در جهت دیگر parse میکند.