پرش به محتوا

تبدیل کننده CSV به JSON - ابزار رایگان تبدیل فایل آنلاین

این ابزار فایل‌های CSV را به JSON و برعکس تبدیل می‌کند. پردازش در مرورگر شما انجام می‌شود و داده‌هایتان هرگز به سروری ارسال نمی‌گردد.

مبدل فایل CSV/JSON

تبدیل آسان بین فرمت‌های CSV و JSON. فایل خود را آپلود کنید، پیش‌نمایش داده‌ها را مشاهده کنید و نتیجه تبدیل شده را دانلود نمایید.

مبدل CSV به JSON

مبدل JSON به CSV

ماشین حساب بارگذاری...
📚

مستندات

مبدل CSV به JSON چیست؟

مبدل CSV به JSON ابزاری است که داده‌ها را از قالب CSV (مقادیر جداشده با ویرگول) به قالب JSON (نشانه‌گذاری اشیای جاوااسکریپت) یا برعکس تبدیل می‌کند. این مبدل کاملاً داخل مرورگر وب اجرا می‌شود. فایل بارگذاری‌شده را هرگز به سرور ارسال نمی‌کند، بنابراین داده‌ها روی دستگاه کاربر باقی می‌مانند.

CSV قالبی متنی و ساده برای ذخیره جدول‌هاست؛ مانند صفحه‌گسترده‌هایی که از Excel یا Google Sheets صادر شده‌اند. JSON قالبی متنی مبتنی بر جفت‌های کلید-مقدار است که به‌طور گسترده برای جابه‌جایی داده بین برنامه‌های وب و APIها استفاده می‌شود. چون این دو قالب داده‌ها را به شکل متفاوتی سازمان‌دهی می‌کنند، تبدیل بین آن‌ها به مجموعه‌ای مشخص از قواعد نیاز دارد که در ادامه توضیح داده می‌شوند.

نحوه تبدیل CSV به JSON

  1. روی «بارگذاری فایل CSV» کلیک کنید و یک فایل .csv را از دستگاه انتخاب کنید.
  2. ابزار پیش‌نمایشی از محتوای خام فایل نمایش می‌دهد.
  3. روی «تبدیل به JSON» کلیک کنید. ابزار خط اول را به‌عنوان عنوان ستون‌ها می‌خواند و هر خط دیگر را به یک شیء JSON تبدیل می‌کند.
  4. نتیجه در پیش‌نمایش خروجی، با تورفتگی نمایش داده می‌شود.
  5. برای ذخیره نتیجه به‌عنوان فایل .json روی «دانلود JSON» کلیک کنید، یا برای کپی کردن متن روی «کپی JSON» کلیک کنید.

نحوه تبدیل JSON به CSV

  1. روی «بارگذاری فایل JSON» کلیک کنید و یک فایل .json را انتخاب کنید. فایل باید شامل آرایه‌ای JSON از اشیا باشد؛ برای مثال [{"Name":"Ann"},{"Name":"Bo"}].
  2. ابزار پیش‌نمایشی از متن خام JSON نمایش می‌دهد.
  3. روی «تبدیل به CSV» کلیک کنید. ابزار همه کلیدهای استفاده‌شده در تمام اشیا را گردآوری می‌کند و هر کلید را به یک ستون تبدیل می‌کند.
  4. نتیجه در پیش‌نمایش خروجی، به‌صورت متن CSV نمایش داده می‌شود.
  5. برای ذخیره نتیجه به‌عنوان فایل .csv روی «دانلود CSV» کلیک کنید، یا برای کپی کردن متن روی «کپی CSV» کلیک کنید.

چون هیچ‌یک از داده‌ها از مرورگر خارج نمی‌شوند، سرور محدودیتی برای بارگذاری اعمال نمی‌کند. بااین‌حال، فایل بسیار بزرگ می‌تواند باعث کند شدن زبانه مرورگر شود، زیرا هنگام تبدیل، کل فایل در حافظه نگه داشته می‌شود.

قواعد تبدیل CSV به JSON

مبدل نخستین ردیف فایل را به‌عنوان نام ستون‌ها می‌خواند. هر ردیف بعدی به یک شیء JSON تبدیل می‌شود و نام ستون‌ها کلیدهای آن هستند. اگر ردیفی بیش از تعداد عنوان‌ها مقدار داشته باشد، برای مقادیر اضافی کلیدهایی بر اساس موقعیت مطلق آن‌ها در ردیف ایجاد می‌شود؛ بنابراین با ۳ عنوان، کلید مقدار چهارم field_4، مقدار پنجم field_5 و به همین ترتیب خواهد بود؛ در نتیجه هیچ داده‌ای حذف نمی‌شود. اگر ردیفی مقادیر کمتری داشته باشد، برای کلیدهای مفقود رشته‌های خالی قرار می‌گیرد. اگر دو عنوان نام یکسانی داشته باشند، عنوان دوم با افزودن پسوند تغییر می‌کند؛ بنابراین a, a به کلیدهای a و a_2 تبدیل می‌شود.

مبدل از قواعد CSV تعریف‌شده در RFC ۴۱۸۰، یعنی استاندارد فنی این قالب، پیروی می‌کند. ویرگول داخل یک فیلد فقط زمانی به‌عنوان بخشی از مقدار همان فیلد در نظر گرفته می‌شود، نه جداکننده ستون، که فیلد درون نقل‌قول دوتایی قرار گرفته باشد؛ برای مثال "Smith, John". شکست خط داخل نقل‌قول‌ها نیز بخشی از مقدار باقی می‌ماند و به‌عنوان ردیف جدید تلقی نمی‌شود. دو نقل‌قول دوتایی داخل یک فیلد نقل‌قول‌شده، یک نویسه نقل‌قول واقعی را نشان می‌دهند.

فقط ویرگول به‌عنوان جداکننده ستون شناخته می‌شود؛ ابزار نقطه‌ویرگول، تب یا جداکننده‌های دیگر را شناسایی یا پشتیبانی نمی‌کند.

هر مقدار بررسی و به یک نوع داده تبدیل می‌شود:

  • مقداری که به‌صورت عدد ساده نوشته شده باشد، مانند 42 یا -3.5، به عدد JSON تبدیل می‌شود.
  • متن true یا false، با هر ترکیبی از حروف بزرگ و کوچک، به مقدار بولی JSON تبدیل می‌شود.
  • هر چیز دیگر، ازجمله خانه‌های خالی که به رشته‌های خالی تبدیل می‌شوند، به‌صورت رشته JSON باقی می‌ماند.
  • عددی که صفر ابتدایی داشته باشد، مانند 00512، به‌صورت رشته باقی می‌ماند؛ زیرا صفر ابتدایی اغلب معنادار است، مانند کد پستی یا شماره شناسه.
  • یک مقدار فقط زمانی به‌عنوان عدد پذیرفته می‌شود که نوشتن دوباره آن دقیقاً همان متن را تولید کند. اعداد صحیح بزرگ‌تر از 9,007,199,254,740,991، یعنی بزرگ‌ترین عدد صحیحی که نوع عددی جاوااسکریپت می‌تواند دقیقاً نگه دارد، معمولاً این بررسی را با شکست مواجه می‌کنند و به‌صورت رشته باقی می‌مانند؛ بنابراین هیچ رقمی از دست نمی‌رود.
  • مقداری که فایل از ابتدا درون نقل‌قول قرار داده باشد، همیشه به‌صورت رشته نگه داشته می‌شود، حتی اگر شبیه عدد باشد؛ زیرا نقل‌قول‌گذاری به‌عنوان علامت‌گذاری آن مقدار به‌عنوان متن در نظر گرفته می‌شود.

خطوط خالی فایل نادیده گرفته می‌شوند و شیء خالی ایجاد نمی‌کنند.

قواعد تبدیل JSON به CSV

مبدل همه اشیای آرایه را بررسی می‌کند و مجموعه کامل کلیدهای استفاده‌شده در آن‌ها را گردآوری می‌کند. این کلیدها، به‌ترتیب نخستین مشاهده، عنوان ستون‌های CSV می‌شوند. اگر یک شیء کلیدی را نداشته باشد که شیء دیگری دارد، خانه مربوط به آن خالی می‌ماند و خطایی رخ نمی‌دهد.

تبدیل JSON به CSV، اشیای تو‌در‌تو را به ستون‌های جداگانه تبدیل نمی‌کند. مقداری که خود یک شیء یا آرایه باشد، به‌صورت متن JSON در یک خانه نوشته می‌شود؛ بنابراین {"b": 1} به خانه {"b":1} و [1, 2] به خانه [1,2] تبدیل می‌شود. چیزی از دست نمی‌رود، اما بخش تو‌در‌تو به‌جای تفکیک شدن، در یک ستون باقی می‌ماند. اگر هر بخش به ستون جداگانه‌ای نیاز دارد، ابتدا JSON تو‌در‌تو را دستی مسطح کنید.

مقدار null و کلیدی که یک شیء دارد اما شیء دیگر ندارد، هر دو یک خانه خالی ایجاد می‌کنند.

مقدار خانه‌ای که شامل ویرگول، علامت نقل‌قول یا شکست خط باشد، در خروجی درون نقل‌قول‌های دوتایی قرار می‌گیرد و هر علامت نقل‌قول داخل آن دو برابر می‌شود؛ این کار با قاعده فراردهی CSV توضیح‌داده‌شده در بالا مطابقت دارد.

JSON ورودی باید یک آرایه باشد و هر مورد آن نیز باید یک شیء باشد. قرار گرفتن عدد، رشته، null یا آرایه تو‌در‌تو به‌جای شیء، خطای «JSON باید آرایه‌ای از اشیا باشد» ایجاد می‌کند. آرایه‌ای که هیچ موردی نداشته باشد، خطای «آرایه JSON خالی است. برای تبدیل، دست‌کم یک شیء اضافه کنید.» ایجاد می‌کند. فایل بارگذاری‌شده‌ای که کاملاً بدون محتوا باشد، خطای «فایل بارگذاری‌شده خالی است.» ایجاد می‌کند.

مثال حل‌شده

فایل CSV اولیه:

1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4

تبدیل آن به JSON نتیجه زیر را ایجاد می‌کند:

1[
2  {
3    "Name": "Ann Lee",
4    "Age": 29,
5    "Member": true
6  },
7  {
8    "Name": "Bo, Jr.",
9    "Age": 7,
10    "Member": false
11  }
12]
13

توجه کنید که "Bo, Jr." ویرگول خود را حفظ کرده است، زیرا این فیلد در فایل مبدأ داخل نقل‌قول بوده است؛ همچنین Age و Member به‌ترتیب به عدد و مقدار بولی تبدیل شده‌اند.

تبدیل همان JSON به CSV، با افزودن ردیفی که Age در آن وجود ندارد، نتیجه زیر را ایجاد می‌کند:

1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4Cy Tan,,true
5

مقدار مفقود Age به یک خانه خالی تبدیل می‌شود و ویرگول موجود در "Bo, Jr." باعث می‌شود این فیلد هنگام خروجی گرفتن دوباره درون نقل‌قول قرار گیرد.

کاربردهای رایج

  • تحلیل داده: تبدیل خروجی CSV یک صفحه‌گسترده یا ابزار تحلیل به JSON برای پردازش با جاوااسکریپت، سپس تبدیل نتایج به CSV برای یک گزارش.
  • آزمایش API: توسعه‌دهنده‌ای که APIای با قابلیت دریافت فایل‌های CSV می‌سازد، می‌تواند فایل‌های نمونه را به JSON تبدیل کند تا بررسی کند آیا تجزیه‌گر، اشیای مورد انتظار را تولید می‌کند یا نه.
  • انتقال داده: انتقال رکوردها از سیستمی که CSV صادر می‌کند به سیستمی که فقط JSON می‌پذیرد، یا برعکس.
  • بازبینی سریع: تبدیل فایل JSON به CSV شبیه جدول برای خواندن آسان‌تر، یا تبدیل CSV به JSON.

کتابخانه‌های برنامه‌نویسی همین تبدیل را برای کارهای بزرگ‌تر یا تکرارشونده ارائه می‌کنند؛ مانند ماژول‌های csv و json در پایتون، یا pandas. ابزارهای خط فرمان مانند csvkit و jq تبدیل و پالایش را از پایانه انجام می‌دهند. این گزینه‌ها برای پردازش دسته‌ای مناسب‌اند؛ ابزار مرورگری برای تبدیل یک فایل منفرد، بدون نیاز به نصب، مناسب است.

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

آیا فایل بارگذاری‌شده به سرور ارسال می‌شود؟ خیر. تبدیل در جاوااسکریپت و داخل زبانه مرورگر اجرا می‌شود. فایل از دستگاه محلی خوانده می‌شود و هرگز انتقال داده نمی‌شود.

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

چرا عددی مانند 00512 در خروجی JSON به‌صورت رشته متنی باقی ماند؟ صفرهای ابتدایی معمولاً معنادارند، مانند صفرهای کد پستی؛ بنابراین مبدل این مقدار را به‌صورت رشته نگه می‌دارد و آن را به عدد 512 تبدیل نمی‌کند، زیرا در این صورت صفر حذف می‌شد.

اگر JSONای را تبدیل کنم که شامل اشیای تو‌در‌تو است، چه اتفاقی می‌افتد؟ شیء تو‌در‌تو به‌صورت متن JSON در یک خانه نوشته می‌شود؛ برای مثال {"b":1}. داده حفظ می‌شود، اما به ستون‌های جداگانه تقسیم نمی‌شود. اگر هر فیلد به ستون جداگانه‌ای نیاز دارد، ابتدا داده‌های تو‌در‌تو را مسطح کنید.

اگر JSON من آرایه‌ای از اشیا نباشد، چه می‌شود؟ ابزار خطایی نمایش می‌دهد و چیزی را تبدیل نمی‌کند. ورودی باید یک آرایه JSON باشد که هر مورد آن یک شیء است؛ برای مثال [{"a":1},{"a":2}].

آیا نخستین ردیف فایل CSV همیشه باید ردیف عنوان‌ها باشد؟ بله. مبدل همیشه نخستین ردیف را به‌عنوان نام ستون‌ها در نظر می‌گیرد. در فایلی که ردیف عنوان نداشته باشد، نخستین ردیف داده به‌اشتباه به‌عنوان عنوان خوانده می‌شود.

منابع

  1. شفرانوویچ، ی. "Common Format and MIME Type for Comma-Separated Values (CSV) Files." RFC ۴۱۸۰، IETF، اکتبر ۲۰۰۵. https://www.rfc-editor.org/rfc/rfc4180
  2. بری، ت.، ویراستار. "The JavaScript Object Notation (JSON) Data Interchange Format." RFC ۸۲۵۹، IETF، دسامبر ۲۰۱۷. https://www.rfc-editor.org/rfc/rfc8259
  3. "Working with JSON." مستندات وب MDN، موزیلا. https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON