مبدل YAML به JSON
YAML (مانیفستهای Kubernetes، Docker Compose، پیکربندیهای CI) را جایگذاری کنید و فوراً JSON تمیز بگیرید. خطاها خط دقیق را با یک نشانگر نشان میدهند.
اجرا در مرورگر شمابدون ثبتنامبدون آپلود
نحوهٔ استفاده از YAML به JSON
- YAML را در کادر سمت راست جایگذاری کنید یا یک فایل
.yaml/.ymlباز کنید. - JSON همزمان با تایپ در سمت چپ ظاهر میشود. برای خروجی 2 فاصله، 4 فاصله یا تب را انتخاب کنید.
- برای مرتب کردن الفبایی کلیدها مرتبسازی کلیدها را فعال کنید. این کار هنگام مقایسهٔ پیکربندیها کمک میکند.
- اگر YAML نامعتبر باشد، نوار وضعیت خط و ستون را نشان میدهد و خطوط مشکلدار با نشانگر
^زیر آن ظاهر میشوند. - 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 من جایی آپلود میشود؟
چرا YAML من با خطای «bad indentation» شکست میخورد؟
-) زیر کلید والدشان با تورفتگی یکسان آمدهاند.کامنتهای YAML چه میشوند؟
چرا <code>no</code> بهصورت رشته باقی ماند؟
true/false بولی هستند. پارسرهای قدیمی YAML 1.1، no، yes، on و off را به مقدار بولی تبدیل میکنند («مشکل نروژ»).آیا میتوانم یک مانیفست Kubernetes با چند منبع را تبدیل کنم؟
--- جدا شده یک عنصر از آرایهٔ JSON خروجی میشود، آماده برای jq یا kubectl apply -f - که فهرستهای JSON را هم میپذیرد.