تبدیل فایل CSV به JSON
فایل CSV را با قواعد واقعی گیومه به JSON تبدیل میکند؛ ویرگول، گیومه و شکست خط داخل سلول حفظ میشوند و فایل در هیچ مرحلهای از دستگاه شما خارج نمیشود.
هر فایلی که صفحهگسترده خروجی میدهد. در همین زبانه خوانده میشود و هیچجا فرستاده نمیشود.
چگونگی کار
تبدیل خصوصی یک جدول متنی
این ابزار خروجی صفحهگسترده را در همان زبانه به JSON تبدیل میکند. در مبدلهای سروری، فهرست مشتریان، گزارش حقوق یا دادهٔ درمانی ابتدا به رایانهٔ شخص دیگری فرستاده میشود. اینجا Worker فقط بایتهای محلی را میبیند و فایل نتیجه را در حافظهٔ همان مرورگر میسازد.
بخش دشوار، گیومه است. هر چهار نمونهٔ زیر در یک CSV عادیاند و جداکردن ساده با
split(',') را خراب میکنند:
Name,Role
"Lovelace, Ada",Mathematician
"She said ""hello""",Quoted
"12 High Street
London",Multi-line
تجزیهگر یک حالت نگه میدارد: داخل گیومه هستیم یا بیرون آن. ویرگول و شکست خط داخل گیومه جزو مقدارند. دو گیومهٔ پیاپی یک گیومهاند. بیرون گیومه، جداکننده فیلد را تمام میکند و شکست خط رکورد را.
عنواندار یا مکانی
در حالت «یک آبجکت برای هر ردیف»، عنوانهای ردیف نخست کلید میشوند. عنوان خالی
با نام مکانی مانند column2 جایگزین میشود و عنوان تکراری پسوند میگیرد؛ وگرنه
دو مقدار زیر یک کلید میافتند و یکی بیصدا از بین میرود. ردیف کوتاه هم با رشتهٔ
خالی پر میشود تا شکل همهٔ آبجکتها یکسان بماند.
در حالت آرایهای، نامها کنار گذاشته میشوند و ترتیب ستونها قرارداد داده است. این حالت برای مسیرهای ماشینی با طرح جداگانه مناسب است؛ برای دادهای که انسان باید بخواند، آبجکتهای نامدار معمولاً امنترند.
نمونهٔ محاسبه
این جدول چهار ردیف داده و چهار ستون دارد:
Year,Paid in,Interest,Balance
1,3000,152.34,3152.34
2,6000,468.91,6468.91
3,9000,955.02,9955.02
4,12000,1620.77,13620.77
نخستین آبجکت خروجی چنین است:
{ "Year": "1", "Paid in": "3000", "Interest": "152.34", "Balance": "3152.34" }
همهٔ مقدارها عمداً رشتهاند. اگر فقط چند ستون را میخواهید، پیش از تبدیل از انتخاب ستونهای CSV استفاده کنید تا JSON نهایی کوچکتر و روشنتر باشد.
مراحل انجام کار
- فایل انتخابی را در همین زبانه بهصورت UTF-۸ بخوان و BOM آغازین را کنار بگذار.
- جداکننده را با شمارش ویرگول، نقطهویرگول، تب و خط عمودی بیرون از گیومه در نخستین رکورد کامل تشخیص بده یا گزینهٔ دستی را به کار ببر.
- متن را نویسهبهنویسه بخوان و حالت داخل گیومه را نگه دار تا جداکننده و شکست خط داخل فیلد جزو مقدار بمانند.
- دو گیومهٔ پیاپی داخل فیلد گیومهدار را به یک گیومهٔ واقعی تبدیل کن.
- در حالت عنواندار، ردیف نخست را کلید آبجکتها کن؛ ردیف کوتاه را پر و عنوان خالی یا تکراری را مکانی نامگذاری کن تا ستونی گم نشود.
- نتیجه را با تورفتگی دو فاصله به JSON تبدیل و همانجا برای دریافت آماده کن.
فرضها
- همهٔ مقدارها رشته میشوند. CSV نوع داده ندارد و حدسزدن عدد میتواند صفرهای آغازینِ ۰۰۷ را برای همیشه از بین ببرد.
- سقف فایل ۲۰ مگابایت، ۵۰۰٬۰۰۰ ردیف و ۵٬۰۰۰ ستون است، چون همهٔ جدول هنگام تبدیل در حافظه قرار میگیرد.
- ورودی UTF-۸ فرض میشود. کدپیج قدیمی ویندوز باید پیش از این تبدیل شود تا حروف به نویسهٔ جایگزین تبدیل نشوند.
پرسشهای رایج
آیا فایل CSV من جایی بارگذاری میشود؟
نه. Worker مرورگر فایل را روی همین دستگاه میخواند و تبدیل میکند. سروری برای دریافت فایل وجود ندارد و آزمون خودکار صفحه هر درخواست بیرون از سایت را هنگام انتخاب فایل بهعنوان خطا ثبت میکند.
چرا همهٔ عددهای JSON بهشکل رشته هستند؟
چون CSV نوع داده ندارد. تبدیل خودکار ۰۰۷ به عدد ۷، شمارهٔ کالا، تلفن یا نسخه را خراب میکند. نوع ستون را در سامانهای تعیین کنید که معنای آن را میشناسد، نه هنگام خواندن یک قالب متنی مبهم.
فایل من با نقطهویرگول جدا شده است؛ کار میکند؟
بله. جداکننده از نخستین رکورد کامل و بیرون گیومه تشخیص داده میشود و در بخش گزینههای بیشتر میتوانید ویرگول، نقطهویرگول یا تب را دستی انتخاب کنید.
سلولی که ویرگول یا شکست خط دارد چه میشود؟
اگر در گیومه باشد، هر دو نشانه بخشی از همان مقدار میمانند. دو گیومهٔ پیاپی نیز طبق RFC ۴۱۸۰ به یک گیومهٔ واقعی تبدیل میشوند.