CSV و JSON: دو روش برای حمل دادههای یکسان
بیشتر دادههای جدولی در یکی از دو فرمت زندگی میکنند. CSV زبان مادری صفحهگسترده است: یک فایل متنی ساده که هر خط یک ردیف است و کاماها ستونها را جدا میکنند. JSON زبان APIها و اپهاست: یک فرمت متنی ساختاریافته که از اشیاء (جفتهای کلید و مقدار) و آرایهها (فهرستهای مرتب) ساخته شده. آنها اطلاعات یکسانی را به شکلهای بسیار متفاوت توصیف میکنند، که دقیقاً همین دلیل است که تبدیل بین آنها اینقدر پیش میآید. این صفحه آن تبدیل را در هر دو جهت، کاملاً درون مرورگرتان انجام میدهد.
CSV جایی میدرخشد که یک شبکه طبیعی احساس میشود. یک گزارش از پایگاه داده خروجی بگیرید، یک فهرست سفارشها دانلود کنید، یا یک برگه از Excel یا Google Sheets ذخیره کنید، و تقریباً همیشه CSV میگیرید. فشرده، خواناست و هر ابزار تحلیلی روی زمین میتواند آن را باز کند. JSON جایی میدرخشد که نرمافزار با نرمافزار صحبت میکند. REST APIها آن را ارسال و دریافت میکنند، فایلهای پیکربندی از آن استفاده میکنند، و JavaScript آن را بدون هیچ کتابخانهای میخواند. وقتی نیاز دارید یک خروجی صفحهگسترده را به یک API بدهید یا یک پاسخ API را به صفحهگسترده بکشید، واقعاً بین این دو دنیا ترجمه میکنید.

چطور ردیفها و سرستونها به اشیاء تبدیل میشوند
نگاشت سادهتر از آن چیزی است که به نظر میرسد. اولین خط یک فایل CSV معمولاً ردیف سرستون است، و آن نامهای سرستون به کلیدهای JSON تبدیل میشوند. هر ردیف بعدی یک شیء میشود، که در آن هر سلول با سرستون مطابق جفت میشود. کل فایل به یک آرایه از آن اشیاء تبدیل میشود. پس یک CSV با ستونهای name,email,age به فهرستی مانند [{"name": "Ada", "email": "ada@example.com", "age": "36"}, ...] تبدیل میشود. رفتن به سمت مخالف، JSON به CSV، کلیدهای اولین شیء را میخواند تا خط سرستون را بسازد، سپس یک ردیف به ازای هر شیء مینویسد. تا زمانی که دادههایتان واقعاً جدولی هستند، این یک رفت و برگشت تمیز و قابل پیشبینی است.
نکات مهمی که ارزش دانستن دارند
CSV ساده به نظر میرسد اما چند لبه تیز پنهان دارد. بزرگترین آنها کاما درون یک فیلد است. اگر یک آدرس شامل «برلین، آلمان» باشد، یک تقسیم ساده روی کاماها آن مقدار منفرد را به دو ستون تبدیل میکند. استاندارد CSV این را با پوشاندن چنین فیلدهایی در گیومههای دوتایی مدیریت میکند، و گیومهها درون یک فیلد گیومهدار دو برابر میشوند (""). یک مبدل خوب این قوانین را رعایت میکند تا دادههایتان بیصدا ستونها را جابجا نکند. به جداکننده هم توجه کنید: بسیاری از خروجیهای اروپایی به جای کاما از نقطهویرگول استفاده میکنند، چون کاما آنجا جداکننده اعشار است. تب و پایپ هم ظاهر میشوند.
تفاوت عمیقتر در نوعها است. CSV هیچ مفهومی از نوع داده ندارد. همه چیز متن است، بنابراین عدد 42، بولین true، و یک سلول خالی همه مانند رشتههای ساده به نظر میرسند. JSON، برعکس، بین اعداد، رشتهها، بولینها، null و ساختارهای تودرتو تمایز قائل میشود. وقتی CSV را به JSON تبدیل میکنید، مقادیر به صورت رشته میآیند مگر اینکه به ابزار گفته شود اعداد و بولینها را تفسیر کند. تبدیل JSON به CSV مشکل معکوس دارد: اشیاء و آرایههای تودرتو در یک شبکه تخت به خوبی جا نمیشوند، پس معمولاً صاف میشوند یا به صورت رشته در یک سلول نوشته میشوند. دانستن این موضوع از ابتدا شما را از سردرگمی نسبت به اینکه چرا یک ستون «اشتباه به نظر میرسد» نجات میدهد.

یک رفت و برگشت واقعی
سناریویی که مدام پیش میآید این است. یک همکار صفحهگستردهای از کاربران جدید برایتان میفرستد و از شما میخواهد آنها را از طریق یک API داخلی بارگذاری کنید. API فقط JSON میپذیرد. برگه را به CSV خروجی میگیرید، آن را اینجا جایگذاری میکنید، و یک آرایه تمیز از اشیاء آماده برای انداختن در payload درخواستتان برمیگردانید. بعداً، API یک فهرست JSON از رکوردهایی که ایجاد کرده برمیگرداند، و شما باید آن را برای بازبینی به همان همکار پس دهید. JSON را جایگذاری میکنید، به CSV تبدیل میکنید، و مستقیم در صفحهگستردهشان باز میشود. بدون اسکریپت، بدون نصب، فقط دو ترجمه سریع در میان یک گردشکار معمولی.
فقط محلی، طبق طراحی
همه اینها در مرورگرتان اجرا میشود. CSV و JSON شما توسط JavaScript روی دستگاه خودتان تجزیه و تبدیل میشوند، و هیچچیزی به سرور آپلود نمیشود. این مهم است چون خروجیها اغلب شامل نامهای واقعی، ایمیلها، جزئیات سفارش یا شناسههای داخلی هستند که نباید در یک سرویس تصادفی از راه دور کپی کنید. اینجا دادهها هرگز صفحه را ترک نمیکنند. اگر میخواهید نتیجه را بعد از آن مرتب کنید، قالببندیکننده JSON ما آن را زیبا چاپ و اعتبارسنجی میکند، و میتوانید بقیه مبدلهای داده ما را برای فرمتهای مرتبط ببینید.
سوالات متداول
آیا دادههایم جایی آپلود میشوند؟
خیر. تبدیل کاملاً در مرورگر شما با استفاده از JavaScript اجرا میشود، بنابراین CSV و JSON شما روی دستگاه خودتان میمانند و هرگز به سرور ارسال نمیشوند.
آیا مبدل کاماهای داخل فیلدها را مدیریت میکند؟
بله. فیلدهایی که شامل کاما هستند باید در CSV در گیومههای دوتایی پوشانده شوند، و تجزیهکننده آن گیومهها را رعایت میکند تا مقدار در یک ستون باقی بماند.
چرا اعدادم در JSON به صورت متن نشان داده میشوند؟
CSV هیچ نوع دادهای ندارد، پس هر سلول متن ساده است. مقادیر به رشتههای JSON تبدیل میشوند مگر اینکه تجزیه اعداد و بولینها اعمال شود، چون فایل منبع هیچ راهی برای تشخیص عدد از کلمه نمیدهد.
وقتی JSON تودرتو را به CSV تبدیل میکنم چه اتفاقی میافتد؟
یک شبکه تخت نمیتواند ساختارهای تودرتو را نگه دارد، بنابراین اشیاء و آرایههای تودرتو معمولاً صاف میشوند یا به صورت یک مقدار رشتهای درون یک سلول نوشته میشوند.
آیا میتوانم به جای کاما از نقطهویرگول یا تب استفاده کنم؟
بله. بسیاری از خروجیها، به خصوص اروپاییها، از نقطهویرگول یا تب به عنوان جداکننده استفاده میکنند، و ابزار میتواند آنها را به جای کاما استاندارد بخواند.
آیا در هر دو جهت تبدیل میکند؟
بله. میتوانید CSV را به JSON و JSON را به CSV تبدیل کنید، که رفت و برگشت بین صفحهگستردهها و APIها را ساده میکند.
