نحوه استفاده
- جهت تبدیل را انتخاب کنید: JSON → YAML یا YAML → JSON.
- داده خود را جایگذاری کنید یا روی «یک نمونه را امتحان کنید» بزنید. نتیجه همزمان با تایپ شما بهروز میشود.
- برای خروجی، تورفتگی ۲ یا ۴ فاصله انتخاب کنید.
- نتیجه را کپی یا دانلود کنید. «استفاده از خروجی بهعنوان ورودی» جهت را برعکس میکند تا بتوانید تبدیل را برگردانید.
نحوه کار
تبدیل از کتابخانه متنباز yaml (نسخه ۲) استفاده میکند که مشخصات YAML 1.2 را پیادهسازی میکند. YAML 1.2 عملاً ابرمجموعهای از JSON است؛ بنابراین هر سند JSON بدون از دست رفتن داده به YAML تبدیل میشود و YAMLای که فقط از نگاشتها، فهرستها، رشتهها، اعداد، مقدارهای بولی و null استفاده میکند دوباره به JSON یکسان تبدیل میشود.
هنگام نوشتن YAML، ابزار رشتههایی را که ممکن است خواننده چیز دیگری برداشت کند داخل گیومه میگذارد. تجزیهگرهای قدیمیتر YAML 1.1 مانند PyYAML و بسیاری از ابزارهای CI مقدارهای yes، no، on و off را بولی، 0777 را عدد هشتهشتی و 2024-01-31 را تاریخ در نظر میگیرند؛ بنابراین اینها بهصورت "yes"، "0777" و "2024-01-31" نوشته میشوند. رشتههای بلند در چند خط تا نمیشوند. توضیحها منتقل نمیشوند، چون JSON توضیح ندارد.
هنگام خواندن YAML، لنگرها (&name) و نامهای مستعار (*name) از جمله کلید ادغام << گسترش مییابند و پروندهای با چند سند که با --- جدا شدهاند به آرایه JSON تبدیل میشود. برای محافظت از مرورگر شما، گسترش نام مستعار محدود است و این کار سندهای «billion laughs» را متوقف میکند. مقدارهای YAML بدون معادل JSON تا حد امکان نزدیک تبدیل میشوند: .inf و .nan به null تبدیل میشوند و زمانها رشته باقی میمانند. خطاهای نحوی با شماره خط و ستون گزارش میشوند.
نمونهها
مانیفست Kubernetes
یک Deployment که توسط اسکریپت بهصورت JSON نوشته شده است به چیدمان YAML مورد انتظار کاربران kubectl تبدیل میشود و فهرستهای زیر containers بهصورت - name: web نوشته میشوند. مقدارهایی مانند "no" داخل گیومه میمانند تا رشته باقی بمانند.
پیکربندی CI با لنگرها
پرونده خط لوله، defaults را با &defaults تعریف میکند و با <<: *defaults دوباره از آنها استفاده میکند. تبدیل به JSON دقیقاً نشان میدهد که هر job پس از ادغام چه کلیدهایی دارد.
مشخصات OpenAPI
یک پرونده OpenAPI بهصورت YAML نگهداری میشود، اما یک مولد کد به JSON نیاز دارد. YAML را جایگذاری کنید، تورفتگی ۲ فاصله را انتخاب کنید و فایل .json را دانلود کنید.
پرسشهای متداول
چرا "yes" در YAML من داخل گیومه نوشته شده است؟
طبق قوانین YAML 1.1 که هنوز در PyYAML، Ansible و بسیاری ابزارهای دیگر استفاده میشود، yes، no، on یا off بدون گیومه مقدار بولی است. گیومه گذاشتن باعث میشود در هر تجزیهگری رشته بماند. گیومهها بخشی از مقدار نیستند.
آیا توضیحهای YAML هنگام تبدیل به JSON حفظ میشوند؟
خیر. JSON دستور نحوی برای توضیح ندارد، بنابراین توضیحها حذف میشوند. تبدیل دوباره JSON به YAML نیز آنها را برنمیگرداند.
با چند سند YAML که با --- جدا شدهاند چه اتفاقی میافتد؟
آنها بهترتیب به یک آرایه JSON با یک عنصر برای هر سند تبدیل میشوند. یک سند تکی مستقیماً به مقدار خودش تبدیل میشود.
تگهای سفارشی مانند !Ref در CloudFormation چطور؟
تگهای خاص برنامه درک نمیشوند. ابزار اخطاری نشان میدهد و مقدار تگگذاریشده را بهصورت یک مقدار ساده تبدیل میکند؛ بنابراین !Ref MyBucket به رشته «MyBucket» تبدیل میشود و خود تگ از بین میرود.
حریم خصوصی
هر دو جهت تبدیل کاملاً در مرورگر شما اجرا میشوند. JSON یا YAML شما بارگذاری، ذخیره یا در دادههای تحلیلی گنجانده نمیشود.