تبدیل YAML به JSON و JSON به YAML

تبدیل دوطرفه‌ی YAML و JSON با پشتیبانی از ساختارهای تودرتو، فهرست‌ها و توضیحات؛ بدون ارسال داده به سرور.

ابزارهای توسعه‌دهنده رایگان

دربارهٔ این ابزار

تبدیل YAML به JSON و برعکس؛ سریع و در مرورگر

فایل‌های پیکربندی Kubernetes، گردش‌کارهای GitHub Actions، Docker Compose و بسیاری از تنظیمات برنامه‌های مدرن با YAML نوشته می‌شوند، اما بیشتر APIها و ابزارها فقط JSON می‌پذیرند. با ابزار تبدیل YAML به JSON تولتولیا کافی است محتوا را جای‌گذاری کنید تا نتیجه هم‌زمان با تایپ در سمت دیگر نمایش داده شود. جهت تبدیل هم با یک کلیک عوض می‌شود تا بتوانید JSON را به YAML تبدیل کنید. این ابزار یک تجزیه‌گر واقعی است و اشیای تودرتو، فهرست‌های تودرتو، فهرستی از اشیا و آرایه‌های درون‌خطی را درست پردازش می‌کند.

ویژگی‌های ابزار

  • تبدیل دوطرفه: YAML به JSON و JSON به YAML در یک صفحه.
  • تبدیل لحظه‌ای هم‌زمان با تایپ، بدون نیاز به دکمه.
  • پشتیبانی از ساختارهای واقعی: اشیا و فهرست‌های تودرتو، توضیحات (#)، رشته‌های داخل گیومه‌ی تکی و دوتایی و مجموعه‌های درون‌خطی مثل [80, 443] و {a: 1, b: 2}.
  • تورفتگی قابل انتخاب: JSON با ۲ فاصله، ۴ فاصله یا فشرده.
  • نمایش خطا در صورت وجود اشکال نحوی.
  • حفظ حریم خصوصی: داده‌های شما به هیچ سروری ارسال نمی‌شود.

آموزش استفاده

  1. جهت تبدیل را انتخاب کنید: YAML → JSON یا JSON → YAML.
  2. محتوا را در کادر ورودی جای‌گذاری کنید؛ خروجی بلافاصله نمایش داده می‌شود.
  3. برای خروجی JSON، تورفتگی دلخواه را انتخاب کنید.
  4. برای جابه‌جایی جهت و محتوای دو کادر، روی «تغییر جهت» بزنید.
  5. برای دیدن یک مثال آماده، روی «بارگذاری نمونه» بزنید و در پایان، خروجی را با «کپی خروجی» کپی کنید.

نمونه‌ی تبدیل

یک قطعه‌ی YAML به سبک Kubernetes:

replicas: 3
selector:
  app: web
ports:
  - 80
  - 443

به این JSON تبدیل می‌شود؛ شیء تودرتو و فهرست هر دو حفظ می‌شوند:

{
  "replicas": 3,
  "selector": {
    "app": "web"
  },
  "ports": [80, 443]
}

تفاوت YAML و JSON

ویژگیYAMLJSON
ساختاربر پایه‌ی تورفتگیبر پایه‌ی آکولاد و کروشه
توضیحات (کامنت)دارد (#)ندارد
خوانایی برای انسانبالامتوسط
کاربرد اصلیفایل‌های پیکربندیتبادل داده بین سیستم‌ها و APIها
حساسیت به فاصلهبسیار حساسغیرحساس

خطاهای رایج در YAML

  • استفاده از Tab: در YAML تورفتگی فقط با فاصله (Space) مجاز است و Tab خطا ایجاد می‌کند.
  • تورفتگی ناهماهنگ: همه‌ی کلیدهای هم‌سطح باید دقیقاً به یک اندازه تورفتگی داشته باشند.
  • فراموش کردن فاصله بعد از دونقطه: key:value اشتباه و key: value درست است.
  • تفسیر ناخواسته‌ی مقادیر: مقادیری مثل yes، no، on یا off در برخی تجزیه‌گرها به‌عنوان مقدار بولین خوانده می‌شوند. اگر منظورتان متن است، آن را داخل گیومه بگذارید.
  • صفرهای ابتدای اعداد: مقداری مثل کد پستی یا شماره‌ای که با صفر شروع می‌شود را داخل گیومه بگذارید تا صفر آن حذف نشود.

محدودیت‌های ابزار

این ابزار برای YAMLهای رایج در فایل‌های پیکربندی طراحی شده است. لنگرها و نام‌های مستعار (& و *)، فایل‌های چندسندی (جداشده با ---) و رشته‌های چندخطی بلوکی (| و >) پشتیبانی نمی‌شوند. این موارد در بیشتر فایل‌های پیکربندی کمتر استفاده می‌شوند و اشیا، فهرست‌ها و مقادیر معمولی به‌درستی تبدیل می‌شوند.

این ابزار برای چه کسانی مناسب است؟

  • مهندسان DevOps: برای کار با فایل‌های Kubernetes، Docker Compose و CI/CD.
  • توسعه‌دهندگان بک‌اند: برای تبدیل پیکربندی‌ها به JSON قابل ارسال به API.
  • توسعه‌دهندگان فرانت‌اند: برای تبدیل داده‌های JSON به YAML خواناتر.
  • یادگیرندگان: برای درک ساختار YAML با دیدن معادل JSON آن.

برای مرتب‌سازی و اعتبارسنجی JSON از JSON Formatter و Validator استفاده کنید. ابزارهای دیگر برنامه‌نویسی تولتولیا مثل ‎.gitignore ساز و URL Encoder و Decoder را هم امتحان کنید.

سؤالات متداول

آیا توضیحات (کامنت‌های) YAML در JSON حفظ می‌شوند؟

خیر. JSON از توضیحات پشتیبانی نمی‌کند؛ بنابراین هنگام تبدیل YAML به JSON، توضیحات حذف می‌شوند. اگر فایل اصلی را نگه می‌دارید، نسخه‌ی YAML را به‌عنوان مرجع نگه دارید.

چرا برخی رشته‌ها در خروجی YAML داخل گیومه قرار گرفته‌اند؟

ابزار رشته‌هایی را که ممکن است به‌اشتباه عدد، بولین، null یا بخشی از نحو YAML خوانده شوند (مثلاً مقداری که با - شروع می‌شود یا شامل : است) داخل گیومه قرار می‌دهد تا خروجی دوباره درست خوانده شود.

آیا این ابزار YAML را اعتبارسنجی می‌کند؟

تا حدی. اگر YAML اشکال نحوی داشته باشد، تبدیل انجام نمی‌شود و خطا نمایش داده می‌شود. اما ساختار را با یک شِما بررسی نمی‌کند و مواردی مثل کلیدهای تکراری را مانند یک لینتر اختصاصی گزارش نمی‌دهد.

آیا آرایه در سطح بالا پشتیبانی می‌شود؟

بله. در هر دو جهت، هم شیء و هم آرایه در سطح بالا پشتیبانی می‌شوند.

آیا متن فارسی در YAML و JSON درست تبدیل می‌شود؟

بله. مقادیر فارسی و هر زبان دیگری بدون تغییر تبدیل می‌شوند.

آیا داده‌های من جایی ارسال می‌شود؟

خیر. تجزیه و تبدیل کاملاً در مرورگر شما انجام می‌شود و هیچ داده‌ای به سرور ارسال نمی‌شود.