مبدل JSON به YAML

JSON را به YAML تمیز و خوانا برای Kubernetes، Docker Compose، GitHub Actions یا Ansible تبدیل کنید، با کنترل کامل روی تورفتگی، سبک و نقل‌قول‌ها.

اجرا در مرورگر شمابدون ثبت‌نامبدون آپلود

خروجی JSON

نحوهٔ استفاده از JSON به YAML

  1. JSON را در کادر سمت راست جای‌گذاری کنید یا یک فایل .json باز کنید.
  2. YAML همزمان با تایپ در سمت چپ ظاهر می‌شود.
  3. تورفتگی (2 یا 4 فاصله) و سبک را انتخاب کنید: block (هر کلید در یک خط) یا flow ({a: 1}/[x, y]) از یک سطح تودرتویی مشخص.
  4. یک سبک نقل‌قول انتخاب کنید و اگر ترتیب الفبایی می‌خواهید مرتب‌سازی کلیدها را فعال کنید.
  5. YAML را کپی یا دانلود کنید. JSON نامعتبر با خط، ستون و علت محتمل گزارش می‌شود.

چرا JSON را به YAML تبدیل کنیم؟

JSON برای ماشین‌ها و APIها ایده‌آل است، اما خواندن و ویرایش YAML برای انسان‌ها آسان‌تر است: بدون آکولاد، بدون نقل‌قول اجباری و با پشتیبانی از کامنت. بیشتر ابزارهای زیرساخت، از جمله Kubernetes، Helm، Docker Compose، GitHub Actions، GitLab CI و Ansible، با YAML پیکربندی می‌شوند، در حالی که داده‌ای که از آن شروع می‌کنید (خروجی API، kubectl get -o json، state در Terraform) اغلب JSON است.

سبک block در برابر flow

سبک block هر کلید و آیتم فهرست را در خط خودش قرار می‌دهد و انتخاب مرسوم برای فایل‌های پیکربندی است. سبک flow مانند JSON از {} و [] درون‌خطی استفاده می‌کند و ساختارهای کوچک انتهایی را فشرده نگه می‌دارد. «Flow از سطح 2» دو سطح بالایی را به سبک block نگه می‌دارد و هر چیز عمیق‌تر را درون‌خطی می‌کند، که برای فهرست‌های طولانی از اشیای کوچک مانند پورت‌ها یا متغیرهای محیطی خوب کار می‌کند.

نقل‌قول امن

رشته‌هایی که یک پارسر YAML ممکن است اشتباه بخواند به‌طور خودکار نقل‌قول می‌شوند: مقادیری مانند 'no'، 'on'، '1.0'، 'null'، رشته‌هایی که با * یا & شروع می‌شوند و رشته‌هایی که : دارند. اگر راهنمای سبک شما نقل‌قول همهٔ رشته‌ها را الزامی می‌داند، همیشه تکی یا همیشه دوتایی را انتخاب کنید.

نکات YAML 1.1 در برابر 1.2

این مبدل از YAML 1.2، مشخصات فعلی، پیروی می‌کند. بسیاری از ابزارهای قدیمی‌تر (PyYAML، Psych در Ruby، برخی نسخه‌های Kubernetes و Ansible) هنوز YAML 1.1 را می‌خوانند که قواعدش متفاوت است:

  • مشکل نروژ: در YAML 1.1، country: no به معنای false است، بنابراین کد کشور نروژ یعنی NO ناپدید می‌شود. همین موضوع برای yes، on، off، y و n صادق است. YAML 1.2 فقط true و false را بولی در نظر می‌گیرد.
  • اعداد اکتال: 0755 در 1.1 اکتال است اما در 1.2 یک عدد دهدهی ساده است و 1.2 از 0o755 استفاده می‌کند. برای اطمینان، مجوزهای فایل را نقل‌قول کنید.
  • اعداد شصت‌گانی: در 1.1، 22:30 ممکن است به عدد 1350 تجزیه شود. زمان‌ها و نگاشت پورت‌ها مانند "8080:80" را نقل‌قول کنید.

جهت JSON → YAML رشته‌های مبهم ('no'، 'on'، 'y') را به‌طور خودکار نقل‌قول می‌کند، بنابراین YAML تولیدشده در هر دو نسخه یکسان خوانده می‌شود.

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

آیا تبدیل بدون اتلاف است؟
بله. هر سند JSON یک YAML 1.2 معتبر است و YAML تولیدشده دقیقاً به همان داده تجزیه می‌شود. می‌توانید با زدن جابه‌جایی آن را بررسی کنید.
چرا برخی رشته‌ها نقل‌قول دارند و برخی نه؟
با فقط در صورت نیاز، نقل‌قول فقط جایی اضافه می‌شود که مقدار بدون نقل‌قول معنایش تغییر می‌کند، مثلاً 'yes'، '123' یا رشته‌هایی با کاراکتر ویژه. بقیه برای خوانایی ساده باقی می‌مانند.
آیا می‌توانم به خروجی کامنت اضافه کنم؟
JSON کامنت ندارد، بنابراین چیزی برای تبدیل نیست، اما می‌توانید پس از کپی کردن YAML به آن # comments اضافه کنید.
آیا ترتیب کلیدها تغییر می‌کند؟
خیر. کلیدها ترتیب JSON خود را حفظ می‌کنند، مگر اینکه مرتب‌سازی کلیدها را فعال کنید.
آیا داده‌های من خصوصی می‌مانند؟
بله. مبدل در مرورگر شما اجرا می‌شود و هیچ درخواست شبکه‌ای با ورودی شما ارسال نمی‌کند.

ابزارهای مرتبط