تبدیل CSV به JSON چیست؟
CSV (مقادیر جداشده با کاما، RFC 4180) یک فرمت متنی مسطح و جدولی است؛ JSON (نشانهگذاری اشیاء JavaScript، RFC 8259) یک فرمت متنی درختشکل برای دادههای ساختاریافته است. تبدیل CSV به JSON یک جدول مناسب صفحهگسترده را به یک آرایه از اشیاء مناسب API تبدیل میکند — یک شیء بهازای هر ردیف، با ردیف سرآیند بهعنوان کلید — بدون تایپ مجدد یک سلول.
تبدیل CSV به JSON چگونه کار میکند؟
هر تبدیل بهصورت محلی در مرورگر شما اجرا میشود. مراحل کلی عبارتند از:
- CSV را در پنل ورودی الصاق میکنید و CONVERT را فشار میدهید؛ ابزار متن را تجزیه میکند و یک آرایه JSON از اشیاء را در پنل خروجی میفرستد.
- یک state machine کاراکتر به کاراکتر (FIELD_START → IN_UNQUOTED_FIELD یا IN_QUOTED_FIELD) ورودی را پیمایش میکند، escape نقلقول
""را محترم میشمارد، هر دو پایاندهنده ردیف\r\nو\nرا تشخیص میدهد و یک آرایه دوبعدی از رشتهها را بهعنوان نمایش میانی تولید میکند. - اگر ردیف اول سرآیند باشد، سلولهایش کلیدهای اشیاء میشوند؛ در غیر این صورت ابزار کلیدهای مصنوعی
field0،field1، … تولید میکند تا هر ردیف به یک شیء کامل تبدیل شود. - جداکننده (کاما، سمیکولون، tab، pipe یا تشخیص خودکار) و اجبار نوع (اعداد / بولیها /
null) قابل تنظیم هستند. با اجبار روشن،30عدد 30 وtrueبولی میشود؛ با اجبار خاموش، هر سلول رشته باقی میماند. - خروجی بهصورت متن فرمتشده توسط
JSON.stringifyدر textarea فقط خواندنی نوشته میشود و یک لینک دانلود یکBlobبا نوع MIME application/json;charset=utf-8میسازد تا بتوانید نتیجه را با یک کلیک ذخیره کنید.
چرا CSV را با این ابزار به JSON تبدیل کنیم؟
- حریم خصوصی: هر مرحله تجزیه و تبدیل بهصورت محلی در مرورگر شما اجرا میشود. دادهها هرگز به سرورهای ما نمیرسند.
- صحت: پارسر CSV یک state machine واقعی است. فیلدهایی شامل کاماهای نقلقولی (
"Bob, Jr.")، خطوط جدید تعبیهشده و نقلقولهای escape شده به یک سلول تجزیه میشوند، نه سه سلول — پیادهسازیهای سادهsplit(',')این را اشتباه میکنند. - وفاداری نوع: اجبار اختیاری سلولهای عددی و بولی را به اعداد و بولیهای واقعی JSON تبدیل میکند، بنابراین آرایهای که دریافت میکنید بدون یک پاس پاکسازی دیگر آماده استفاده مستقیم است.
- انعطافپذیری: هر جداکنندهای را برای dialectهای CSV غیر کاما انتخاب کنید، تعیین کنید آیا ردیف اول سرآیند است یا خیر، و اجبار نوع را برای حالتهایی که هر سلول باید رشته بماند تغییر دهید.
کاربردهای رایج تبدیل CSV به JSON چیست؟
تجزیه CSV به JSON در سراسر کار داده و ابزارسازی ظاهر میشود:
- mock کردن API: الصاق یک fixture CSV صادرشده از یک صفحهگسترده و تبدیل آن به یک آرایه JSON که سرور محلی شما میتواند بهعنوان یک endpoint mock شده برگرداند.
- وارد کردن داده: تبدیل یک صادرات صفحهگسترده (مخاطبان، موجودی، پاسخهای نظرسنجی) به یک آرایه JSON که برنامه یا اسکریپت شما میتواند بدون وابستگی به پارسر CSV روی آن iterate کند.
- ویرایش تنظیمات: اجازه دادن به بررسیکنندگان غیرتکنیکال برای ویرایش سلول به سلول تنظیمات یا پرچمهای ویژگی در صفحهگسترده، سپس تبدیل CSV ذخیرهشده به JSON که برنامه شما واقعاً بارگذاری میکند.
یک مثال CSV به JSON چگونه است؟
الصاق name,age در ردیف اول، Alice,30 در دوم، و "Bob, Jr.",25 در سوم، سپس فشردن CONVERT با جداکننده کاما، ردیف اول بهعنوان کلید، و اجبار نوع روشن، نتیجه [{"name":"Alice","age":30},{"name":"Bob, Jr.","age":25}] را تولید میکند — کاما نقلقولی در "Bob, Jr." در یک فیلد باقی میماند، و سنها اعداد واقعی JSON میشوند.
آیا این مبدل CSV به JSON کاملاً در مرورگر من اجرا میشود؟
بله. هر مرحله تجزیه و تبدیل بهصورت محلی بهعنوان JavaScript داخل تب مرورگر شما اجرا میشود. ابزار اصلاً fetch، XMLHttpRequest یا navigator.sendBeacon را فراخوانی نمیکند — payload های CSV شما هرگز به سرورهای ما، یک مبدل شخص ثالث یا هیچ pipeline تحلیلی نمیرسند. ابزار همچنین پس از بارگذاری صفحه بهصورت آفلاین کار میکند، چون یک bundle HTML/CSS/JS استاتیک بدون وابستگی API زمان اجرا است.
حداکثر اندازه ورودی که این مبدل میتواند مدیریت کند چقدر است؟
مبدل کل ورودی را در حافظه buffer میکند و بهصورت همزمان روی thread اصلی اجرا میشود، بنابراین محدودیتهای عملی به دستگاه شما بستگی دارند. ورودیهایی تا حدود ۱۰ مگابایت CSV (تقریباً ۱۰۰,۰۰۰ ردیف معمولی) بدون مکث قابل توجه روی یک لپتاپ مدرن تبدیل میشوند. فراتر از آن UI ممکن است در حین اجرای پارسر مسدود شود. تبدیل جریانی با استفاده از Web Worker بهعلاوه یک پارسر chunk شده یک follow-up برنامهریزیشده است — برای حال، مجموعه دادههای بسیار بزرگ را قبل از الصاق تقسیم کنید.
پارسر CSV به JSON چگونه کاماهای نقلقولی و خطوط جدید تعبیهشده را مدیریت میکند؟
پارسر یک state machine کاراکتر به کاراکتر با سه حالت (FIELD_START، IN_UNQUOTED_FIELD، IN_QUOTED_FIELD) است — نه یک split(',') ساده. یک فیلد بستهشده در نقلقول دوگانه میتواند شامل جداکننده، CR، LF یا یک نقلقول دوگانه تحتاللفظی escape شده بهصورت "" باشد، همه بدون شکستن مرزهای فیلد. بنابراین "Bob, Jr.",25 به دو فیلد تجزیه میشود، نه سه، و یک توضیح چند خطی نقلقولشده در چند ردیف به یک سلول واحد تجزیه میشود.
اعداد، بولیها و سلولهای خالی در خروجی JSON چگونه تایپ میشوند؟
تایپگذاری توسط تغییر حالت اجبار نوع کنترل میشود. با اجبار روشن (پیشفرض)، سلولی که شبیه عدد است به عدد JSON تبدیل میشود، true/false بولی میشوند، و null تحتاللفظی null JSON میشود؛ همه چیز دیگر رشته باقی میماند. با اجبار خاموش، هر مقدار صرفنظر از محتوایش رشته نگه داشته میشود — مفید زمانی که صفرهای پیشرو، شماره تلفنها، یا کدهای ID باید سالم بمانند. سلولهای انتهایی کوتاهشده در ردیفهای کوتاه بهعنوان رشته خالی ارسال میشوند تا هر شیء مجموعه کامل کلیدها را داشته باشد.
کدام جداکنندهها پشتیبانی میشوند؟
چهار جداکننده صریح پشتیبانی میشوند: کاما (,، پیشفرض RFC 4180)، سمیکولون (;، رایج در محلیهای اروپایی)، tab (\t، dialect TSV) و pipe (|). همچنین میتوانید تشخیص خودکار را انتخاب کنید که تعداد رخداد هر کاندید را در ۴ کیلوبایت اول ورودی خارج از مناطق نقلقولی شمارش میکند و رایجترین مورد که تعداد ستون ثابتی در پنج ردیف اول تولید میکند را انتخاب میکند.
این مبدل CSV به JSON با یک state machine واقعی تجزیه میکند و JSON تمیز و آماده استفاده تولید میکند که میتوانید مستقیماً در یک فراخوانی API، یک اسکریپت یا یک code review الصاق کنید — بدون آپلود یک بایت.