UltKit

تبدیل JSON به YAML

JSON را به YAML تبدیل کنید تا دیگران بتوانند آن را بخوانند، بازبینی کنند و برایش توضیح بنویسند. فایل‌های .json را بارگذاری کنید و فایل .yaml تورفته با همان کلیدها، مقادیر و ترتیب بگیرید که مستقیم در مخزن کد قرار می‌گیرد.

مبدل داده

یا فایل‌های CSV, TSV, TXT … را اینجا رها کنید ·

حداکثر 95 MB برای هر فایل· تا 20 فایل· حذف پس از 30 دقیقه

خروجی

فایل‌ها روی سرورهای ما پردازش می‌شوند و پس از 30 دقیقه حذف می‌شوند.

نحوه استفاده از این ابزار

  1. 1

    فایل‌های JSON را اضافه کنید

    پاسخ‌های API، تنظیمات خروجی‌گرفته‌شده یا مانیفست‌های تولیدشده را به‌صورت فایل .json بارگذاری کنید؛ حداکثر 20 فایل و هر کدام تا 95 MB. هر فایل باید دقیقاً یک مقدار JSON معتبر داشته باشد.

  2. 2

    تنظیمات پیش‌فرض را تغییر ندهید

    YAML از قبل در بخش تبدیل به انتخاب شده است. برای فایل پیکربندی نیازی به تغییر چیز دیگری نیست؛ خروجی با تورفتگی دو فاصله‌ای نوشته می‌شود.

  3. 3

    تبدیل کنید و در مخزن ثبت کنید

    روی تبدیل به YAML بزنید، فایل‌های .yaml را دانلود کنید، هرجا که خواننده‌ی بعدی به توضیح نیاز دارد کامنت اضافه کنید و کامیت کنید.

پاسخ

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

فایل .json را بارگذاری کنید و تبدیل به YAML را بزنید. اشیا به بلوک‌های تورفته‌ی key: value، آرایه‌ها به فهرست‌هایی با خط تیره تبدیل می‌شوند و رشته‌هایی که YAML ممکن است اشتباه بخواند نقل‌قولشان را حفظ می‌کنند.

چرا JSON را برای فایل‌های پیکربندی به YAML تبدیل کنیم

بیشتر JSONها را نرم‌افزار تولید می‌کند: پاسخ یک API، خروجی تنظیمات یا محصول یک مولد. بیشتر YAMLها را آدم‌ها نگه‌داری می‌کنند. این تبدیل معمولاً لحظه‌ای است که داده از خروجی ماشین به چیزی تبدیل می‌شود که یک تیم مالک آن است، مثل مانیفست استقرار در Git، یک پایپ‌لاین CI یا مجموعه‌ای از متغیرهای Ansible.

مثال رایج: یک API ابری را فراخوانی می‌کنید، توصیف 200 خطی JSON از یک منبع می‌گیرید و می‌خواهید آن را به‌صورت کد زیرساخت نگه دارید. تبدیل، فایلی بدون آکولاد و ویرگول می‌دهد که در آن تغییر یک خط، تفاوتی یک‌خطی ایجاد می‌کند و می‌توانید مقادیر عجیب را در کامنت توضیح دهید. همین درباره‌ی فیکسچرهای تست و فایل‌های ترجمه که غیربرنامه‌نویسان ویرایش می‌کنند هم صدق می‌کند. اگر به‌جای آن جدولی ساده برای صفحه‌گسترده یا گزارش لازم دارید، JSON به CSV مناسب‌تر است.

ابزارهایی که فایل پیکربندی آن‌ها YAML است

YAML تبدیل‌شده معمولاً کجا به کار می‌رود
سازمانالزاممنبع
GitHub Actionsگردش‌کارها در .github/workflows به‌صورت فایل‌های .yml یا .yaml قرار می‌گیرندGitHub Docs
GitLab CI/CDپایپ‌لاین در فایل .gitlab-ci.yml در ریشه‌ی مخزن تعریف می‌شودGitLab Docs
Docker Composeسرویس‌ها در compose.yaml (پیش‌تر docker-compose.yml) توصیف می‌شوندDocker Docs
Ansibleپلی‌بوک‌ها و فایل‌های متغیر با YAML نوشته می‌شوندAnsible Docs
Kubernetesمانیفست‌ها JSON یا YAML می‌پذیرند؛ مستندات و چارت‌های Helm از YAML استفاده می‌کنندKubernetes

نمونهٔ تبدیل JSON به YAML با مقادیر دردسرساز

خروجی YAML برای {"name":"api","version":"1.10","debug":false,"tags":["وب","eu"],"country":"NO"}
name: api
version: "1.10"
debug: false
tags:
  - وب
  - eu
country: "NO"

مزایای YAML

  • کامنت با #
  • تفاوت‌های کوتاه‌تر در بازبینی کد
  • بدون آکولاد، ویرگول یا نقل‌قول در بیشتر خطوط
  • متن چندخطی با اسکالرهای بلوکی |

نکات قابل توجه

  • تورفتگی معنا دارد، پس یک فاصله‌ی اضافی ساختار را عوض می‌کند
  • تب برای تورفتگی مجاز نیست
  • رشته‌های بدون نقل‌قول ممکن است عدد یا بولین خوانده شوند
  • تجزیه‌گرهای کندتر و کمتر یکنواخت نسبت به JSON

این مثال نشان می‌دهد چرا جایگزینی ساده‌ی آکولادها کافی نیست. نسخه‌ی 1.10 در JSON یک رشته است؛ اگر در YAML بدون نقل‌قول نوشته شود، عدد 1.1 خوانده می‌شود. NO، کد ISO نروژ، در تجزیه‌گرهای YAML 1.1 مثل PyYAML به‌صورت false خوانده می‌شود. هر دو نقل‌قول خود را حفظ می‌کنند، در حالی که عددها و بولین‌های واقعی بدون نقل‌قول می‌مانند.

مقایسهٔ JSON و YAML

JSON

نشانه‌گذاری شیء جاوااسکریپت (JSON)

JSON یک فرمت متنی سبک برای داده‌های ساختاریافته است که Douglas Crockford در اوایل دهه 2000 آن را رایج کرد و با عنوان RFC 8259 و ECMA-404 استاندارد شد. اشیا، آرایه‌ها، رشته‌ها، اعداد، مقادیر بولی و null را با نحوی ساده و خوانا نمایش می‌دهد. این فرمت پیش‌فرض APIهای وب، فایل‌های پیکربندی و تبادل داده بین برنامه‌ها در تقریباً همه زبان‌های برنامه‌نویسی است. توضیحات، تاریخ یا طرحواره ندارد و فایل‌های بزرگ تودرتو بدون نمایشگر سخت خوانده می‌شوند.

فشرده‌سازی
–
شفافیت
–
انیمیشن
–
سال معرفی
2001 · Douglas Crockford
مبدل JSON

YAML

YAML

YAML («YAML Ain't Markup Language») قالب داده خوانا برای انسان است که نخستین بار در سال 2001 منتشر شد. به‌جای کروشه و آکولاد از تورفتگی استفاده می‌کند، از توضیحات پشتیبانی می‌کند و ابرمجموعه JSON است. در پیکربندی Docker Compose، Kubernetes، GitHub Actions و بسیاری از برنامه‌ها کاربرد فراوان دارد. وابستگی آن به فاصله‌ها باعث می‌شود با یک فاصله اشتباه خراب شود و برخی مقادیر مانند «no» یا تاریخ‌ها ممکن است غیرمنتظره تفسیر شوند.

فشرده‌سازی
–
شفافیت
–
انیمیشن
–
سال معرفی
2001 · Clark Evans, Ingy döt Net, Oren Ben-Kiki
مبدل YAML

وقتی داده‌ی تولیدشده یا خروجی API باید به فایل پیکربندی‌ای تبدیل شود که انسان‌ها نگه‌داری می‌کنند، در پول‌ریکوئست بازبینی می‌کنند و با کامنت توضیح می‌دهند، JSON را به YAML تبدیل می‌کنند.

پرسش‌های رایج دربارهٔ تبدیل JSON به YAML

آیا JSON به‌خودی‌خود YAML معتبر است؟

در YAML 1.2 بله: نسخه‌ی سال 2009 طوری نوشته شد که هر سند JSON یک سند YAML هم باشد. می‌توانید JSON را در یک فایل .yaml بگذارید و بیشتر ابزارها آن را می‌پذیرند. هدف از تبدیل، خوانایی است: سبک بلوکی بدون آکولاد، نقل‌قول و ویرگول همان چیزی است که بازبینان و نگه‌دارنده‌ی بعدی انتظار دارند.

چرا برخی مقادیر در YAML داخل نقل‌قول قرار می‌گیرند؟

چون بدون نقل‌قول، YAML آن‌ها را از نوعی دیگر می‌خواند. رشته‌ی نسخه‌ای مثل 1.10 به عدد 1.1 تبدیل می‌شود و yes یا off در تجزیه‌گرهای قدیمی‌تر می‌تواند بولین شود. رشته‌هایی که شبیه عدد، تاریخ یا بولین‌اند برای ماندن به‌عنوان رشته نقل‌قول لازم دارند، پس تبدیل دقیق آن‌ها را حفظ می‌کند.

آیا پس از تبدیل می‌توانم توضیح (کامنت) اضافه کنم؟

بله، و این یکی از دلایل رایج تبدیل است. علامت # و پس از آن یادداشتتان را در انتهای یک خط یا در خطی جدا بنویسید. JSON راهی برای توضیح دلیل تنظیم یک مقدار نداشت؛ YAML دارد و بازبینی و تحویل کار را آسان‌تر می‌کند.

چرا YAML من با خطای کاراکتر Tab اجرا نمی‌شود؟

مشخصات YAML تب را برای تورفتگی ممنوع کرده است؛ فقط فاصله معتبر است. مبدل فاصله می‌نویسد، اما ویرایشگری که روی درج تب تنظیم شده باشد ممکن است در ویرایش بعدی فایل را خراب کند. ویرایشگر خود را برای فایل‌های .yaml روی استفاده از فاصله تنظیم کنید.

آیا Kubernetes مانیفست تبدیل‌شده را می‌پذیرد؟

kubectl هم JSON و هم YAML را می‌خواند، پس داده در هر دو حالت یکی است؛ نسخه‌ی YAML فقط همان چیزی است که بیشتر مستندات، چارت‌های Helm و بازبینی‌های کد استفاده می‌کنند. اگر بعداً برای jq یا فراخوانی API دوباره JSON لازم شد، تبدیل YAML به JSON آن را برمی‌گرداند.