مبدل YAML به JSON

YAML (مانیفست‌های Kubernetes، Docker Compose، پیکربندی‌های CI) را جای‌گذاری کنید و فوراً JSON تمیز بگیرید. خطاها خط دقیق را با یک نشانگر نشان می‌دهند.

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

خروجی JSON

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

  1. YAML را در کادر سمت راست جای‌گذاری کنید یا یک فایل .yaml/.yml باز کنید.
  2. JSON همزمان با تایپ در سمت چپ ظاهر می‌شود. برای خروجی 2 فاصله، 4 فاصله یا تب را انتخاب کنید.
  3. برای مرتب کردن الفبایی کلیدها مرتب‌سازی کلیدها را فعال کنید. این کار هنگام مقایسهٔ پیکربندی‌ها کمک می‌کند.
  4. اگر YAML نامعتبر باشد، نوار وضعیت خط و ستون را نشان می‌دهد و خطوط مشکل‌دار با نشانگر ^ زیر آن ظاهر می‌شوند.
  5. JSON را کپی یا دانلود کنید، یا جابه‌جایی را بزنید تا دوباره به YAML تبدیل شود.

YAML چگونه به JSON نگاشت می‌شود

JSON زیرمجموعه‌ای از YAML 1.2 است، بنابراین هر mapping در YAML به یک شیء JSON، هر sequence به یک آرایه و scalarها به رشته، عدد، مقدار بولی یا null تبدیل می‌شوند. ویژگی‌های مخصوص YAML هنگام تبدیل حل می‌شوند:

  • کامنت‌ها (# …) حذف می‌شوند، چون JSON کامنت ندارد.
  • Anchorها و aliasها (&base، *base، <<: *base) به نسخه‌های کامل گسترش می‌یابند.
  • Timestampها مانند 2024-01-02 به رشته‌های ISO 8601 تبدیل می‌شوند.
  • رشته‌های چندخطی (بلوک‌های literal با | و folded با >) به رشته‌های معمولی با escapeهای \n تبدیل می‌شوند.

YAML چندسندی

یک فایل می‌تواند چند سند YAML را که با --- جدا شده‌اند در خود داشته باشد، که در مانیفست‌های Kubernetes رایج است. JSON معادلی برای این ندارد، بنابراین مبدل یک آرایهٔ JSON با یک عنصر برای هر سند برمی‌گرداند و این را در نوار وضعیت اعلام می‌کند. یک --- تنها در انتها نادیده گرفته می‌شود.

نکات 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 تولیدشده در هر دو نسخه یکسان خوانده می‌شود.

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

آیا YAML من جایی آپلود می‌شود؟
خیر. تجزیه در مرورگر شما با کتابخانهٔ متن‌باز js-yaml انجام می‌شود. پیکربندی‌هایی که شامل اطلاعات محرمانه یا نام میزبان‌های داخلی هستند هرگز از دستگاه شما خارج نمی‌شوند.
چرا YAML من با خطای «bad indentation» شکست می‌خورد؟
تودرتویی در YAML با فاصله تعریف می‌شود و استفاده از تب برای تورفتگی مجاز نیست. مطمئن شوید کلیدهای هم‌سطح دقیقاً زیر هم قرار دارند و آیتم‌های فهرست (-) زیر کلید والدشان با تورفتگی یکسان آمده‌اند.
کامنت‌های YAML چه می‌شوند؟
حذف می‌شوند. JSON سینتکسی برای کامنت ندارد، بنابراین کامنت‌ها منتقل نمی‌شوند. تبدیل دوباره به YAML آن‌ها را بازنمی‌گرداند.
چرا <code>no</code> به‌صورت رشته باقی ماند؟
این ابزار از YAML 1.2 پیروی می‌کند که در آن فقط true/false بولی هستند. پارسرهای قدیمی YAML 1.1، no، yes، on و off را به مقدار بولی تبدیل می‌کنند («مشکل نروژ»).
آیا می‌توانم یک مانیفست Kubernetes با چند منبع را تبدیل کنم؟
بله. هر منبعی که با --- جدا شده یک عنصر از آرایهٔ JSON خروجی می‌شود، آماده برای jq یا kubectl apply -f - که فهرست‌های JSON را هم می‌پذیرد.

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