Skip to content

محوّل JSON إلى YAML

الصق JSON واحصل على YAML فوراً. تحويل مباشر في متصفّحك، جاهز لـ Kubernetes وDocker Compose، مع حماية من مشكلة Norway. خصوصية 100%.

بدون تتبّع يعمل في المتصفّح مجاني
الخيارات · مسافتان · تلقائي · كتلة
المسافة البادئة
الأسلوب
0 حرف
YAML الإخراج
0 سطر
تمت المراجعة للتوافق مع RFC 8259 وإخراج مواصفة YAML 1.2 وصحة معالجة مشكلة NorwayGo Tools Engineering Team · May 4, 2026

ما هو YAML؟ ولماذا التحويل من JSON؟

YAML (اختصار لـ «YAML Ain't Markup Language») هو تنسيق تسلسل بيانات مقروء للبشر، مصمَّم لملفات الإعداد والبنية التحتية كرمز وأي مكان يكتب فيه البشر بيانات يقرأها الحاسوب. تبنيته على أساس المسافة البادئة لا تحتاج إلى أقواس معقوفة أو مربعة، مما يجعلها أكثر قابلية للقراءة من JSON للهياكل المتداخلة المعقدة. يستخدم Kubernetes وHelm وAnsible وDocker Compose وGitHub Actions وCircleCI وكل أداة سحابية حديثة تقريباً YAML كتنسيق إعداد أساسي. لذا يُعدّ تحويل JSON إلى YAML من أكثر المهام شيوعاً في DevOps وتطوير الواجهة الخلفية.

تتميز هذه الأداة بأربعة مزايا مقارنة بالمحوّلات النموذجية عبر الإنترنت:

**1. مشكلة Norway — اقتباس تلقائي آمن.** أكبر فخ في تحويل JSON إلى YAML هو مشكلة Norway. في YAML 1.1 (التي لا تزال ملايين المحللات الإنتاجية تستخدمها)، تُحلَّل السلاسل النصية المجردة yes وno وon وoff وy وn كقيم منطقية. اشتُهرت هذه المشكلة برمز الدولة ISO الخاص بالنرويج («NO» → false) وسبّبت أعطالاً حقيقية في إعدادات Kubernetes. يستخدم وضع الاقتباس التلقائي الافتراضي في هذه الأداة مكتبة eemeli/yaml مع مخطط YAML 1.1، فيضيف اقتباسات تلقائياً حول أي سلاسل من مشكلة Norway، مما يضمن التحويل الآمن ذهاباً وإياباً مع محللات YAML 1.1 وYAML 1.2. اطّلع على مزيد من التفاصيل في مقالنا المرفق مشكلة Norway في YAML والفروقات بين JSON وYAML.

**2. الحفاظ على ترتيب المفاتيح.** على خلاف بعض المحوّلات التي ترتب المفاتيح أبجدياً، تحافظ هذه الأداة على ترتيب الإدراج الأصلي من JSON، مطابقةً سلوك JSON.parse() في جميع محركات JavaScript الحديثة. هذا مهم لبيانات Kubernetes (حيث يُتوقَّع apiVersion وkind أولاً بالاتفاقية)، ومواصفات OpenAPI (حيث يسبق info عنصرَ paths).

**3. تحذير دقة الأرقام الكبيرة.** لا يمكن تمثيل أرقام JSON الأكبر من 2^53 - 1 بدقة في نوع الفاصلة العائمة مزدوجة الدقة وفق IEEE 754 في JavaScript. عند قراءة عدد صحيح كبير (مثل حقل resourceVersion في Kubernetes)، يُقرَّب بصمت. توثّق هذه الأداة هذا السلوك بصدق في قسم الأخطاء الشائعة.

**4. خصوصية 100% قائمة على المتصفح.** بيانات JSON الخاصة بك — التي كثيراً ما تحتوي على مفاتيح API وبيانات اعتماد قواعد البيانات وإعدادات الخدمات الداخلية — لا تغادر متصفحك أبداً. لا تُرسَل أي بيانات إلى أي خادم. انظر أداتنا للاتجاه المعاكس على محوّل YAML إلى JSON، ومنسّق JSON إذا كنت بحاجة إلى التحقق من JSON وتجميله قبل التحويل.

// Convert JSON to YAML in Node.js using the eemeli/yaml library
import { Document } from 'yaml';

const data = JSON.parse('{"apiVersion":"apps/v1","kind":"Deployment"}');

// version: '1.1' ensures Norway-problem strings (yes/no/on/off/y/n)
// are automatically quoted in the output for YAML 1.1 parser safety
const doc = new Document(data, { version: '1.1' });

const yamlString = doc.toString({
  indent: 2,
  lineWidth: 0,         // disable line wrapping
  defaultStringType: 'PLAIN',   // Auto mode: only quote when needed
});

console.log(yamlString);
// apiVersion: apps/v1
// kind: Deployment

الميزات الرئيسية

تحويل مباشر

يتحدث إخراج YAML فوراً أثناء الكتابة أو لصق JSON — دون الحاجة إلى زر «تحويل». تتحول المدخلات الكبيرة (أكثر من 200 كيلوبايت) تلقائياً إلى الوضع اليدوي للحفاظ على استجابة المتصفح.

مسافة بادئة مسافتين أو 4 مسافات

التبديل بين مسافتين (المعيار لـ Kubernetes وDocker Compose وGitHub Actions) و4 مسافات (اتفاقية Ansible). تحظر YAML علامات الجدولة — تستخدم هذه الأداة دائماً المسافات.

اقتباس تلقائي آمن (محمي من مشكلة Norway)

يستخدم وضع «التلقائي» الافتراضي مخطط YAML 1.1 لاقتباس السلاسل النصية مثل «no» و«yes» و«on» و«off» و«y» و«n» التي ستُقرأ كقيم منطقية بواسطة محللات YAML 1.1، مما يمنع الأخطاء في الإعدادات الإنتاجية.

أسلوبا الكتلة والتدفق

يُنتج أسلوب الكتلة YAML مقروءاً مسنَّناً مثالياً للبيانات وملفات الإعداد. يُنتج أسلوب التدفق YAML مضغوطاً متضمناً مشابهاً لـ JSON — مفيد لمقاطع التوثيق أو الأدوات التي تفضل الإخراج الأدنى.

خصوصية 100% قائمة على المتصفح

يعمل التحويل كلياً محلياً في متصفحك باستخدام JavaScript. بيانات JSON الخاصة بك — بما في ذلك مفاتيح API وبيانات الاعتماد والإعدادات الإنتاجية — لا تُرسَل إلى أي خادم، ولا تُسجَّل، ولا تُخزَّن.

دعم ملفات K8s وCompose وTerraform

مُحسَّنة لحالات استخدام DevOps الحقيقية: بيانات Kubernetes، ومجموعات Docker Compose، وقيم Helm chart، وسير عمل GitHub Actions، ومواصفات OpenAPI، وإخراج خطط Terraform JSON — مع أمثلة لكل منها.

أمثلة

نشر Kubernetes

{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"my-app","namespace":"production","labels":{"app":"my-app","version":"1.0.0"}},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"my-app"}},"template":{"metadata":{"labels":{"app":"my-app"}},"spec":{"containers":[{"name":"my-app","image":"my-app:1.0.0","ports":[{"containerPort":8080}],"resources":{"requests":{"memory":"64Mi","cpu":"250m"},"limits":{"memory":"128Mi","cpu":"500m"}}}]}}}}

تحويل بيان نشر Kubernetes من صيغة استجابة JSON API إلى YAML لتطبيقه بأمر kubectl apply -f

Docker Compose

{"version":"3.9","services":{"web":{"image":"nginx:1.25-alpine","ports":["80:80","443:443"],"environment":{"NGINX_HOST":"example.com","NGINX_PORT":"80"},"depends_on":["db"],"restart":"unless-stopped"},"db":{"image":"postgres:16-alpine","environment":{"POSTGRES_DB":"mydb","POSTGRES_USER":"admin","POSTGRES_PASSWORD":"secret"},"volumes":["pgdata:/var/lib/postgresql/data"]}},"volumes":{"pgdata":{}}}

تحويل تعريف خدمة Docker Compose من JSON إلى صيغة YAML المطلوبة لتشغيل docker compose up

سير عمل GitHub Actions

{"name":"CI","on":{"push":{"branches":["main"]},"pull_request":{"branches":["main"]}},"jobs":{"build":{"runs-on":"ubuntu-latest","steps":[{"uses":"actions/checkout@v4"},{"name":"Set up Node.js","uses":"actions/setup-node@v4","with":{"node-version":"20","cache":"pnpm"}},{"name":"Install dependencies","run":"pnpm install --frozen-lockfile"},{"name":"Run tests","run":"pnpm test"}]}}}

تحويل تعريف سير عمل CI لـ GitHub Actions من JSON إلى YAML لحفظه في .github/workflows/

مواصفة OpenAPI

{"openapi":"3.0.3","info":{"title":"User API","version":"1.0.0","description":"Manage application users"},"paths":{"/users":{"get":{"summary":"List users","operationId":"listUsers","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}}},"/users/{id}":{"get":{"summary":"Get user","operationId":"getUser","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"}}}}},"components":{"schemas":{"User":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email"}}}}}}

تحويل مواصفة OpenAPI 3.0 من JSON إلى YAML — الصيغة المفضلة لـ Swagger UI وRedoc ومعظم أدوات API

package.json

{"name":"my-app","version":"1.0.0","description":"A sample Node.js application","private":true,"scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","test":"vitest","lint":"eslint . --ext .ts,.tsx"},"dependencies":{"react":"^18.3.0","react-dom":"^18.3.0"},"devDependencies":{"typescript":"^5.4.0","vite":"^5.2.0","vitest":"^1.5.0","eslint":"^8.57.0","@types/react":"^18.3.0"},"engines":{"node":">=20.0.0","pnpm":">=9.0.0"}}

تحويل ملف package.json النموذجي لـ Node.js إلى YAML — مفيد لترحيل إعدادات المشروع إلى أدوات تفضل YAML

خطة Terraform JSON

{"format_version":"1.0","terraform_version":"1.7.4","variables":{"region":{"value":"us-east-1"}},"planned_values":{"root_module":{"resources":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","values":{"bucket":"my-app-assets","force_destroy":false,"tags":{"Environment":"production","ManagedBy":"terraform"}}}]}},"resource_changes":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","change":{"actions":["create"],"before":null,"after":{"bucket":"my-app-assets","force_destroy":false}}}]}

تحويل إخراج خطة Terraform JSON إلى YAML للمراجعة البشرية ومسارات تدقيق GitOps وخطوط CI/CD — ميزة تفتقر إليها معظم المحوّلات

كيفية الاستخدام

  1. 1

    الصق بيانات JSON

    أدخل أو الصق بيانات JSON في حقل الإدخال أعلاه. يمكنك أيضاً النقر على «تحميل مثال» لتجربة عينة كنشر Kubernetes أو ملف Docker Compose أو خطة Terraform.

  2. 2

    شاهد إخراج YAML مباشرة

    يظهر YAML فوراً في لوحة الإخراج. اضبط الخيارات (المسافة البادئة 2/4، الاقتباس تلقائي/مزدوج/مفرد، الأسلوب كتلة/تدفق) لتتطابق مع متطلبات الأداة المستهدفة.

  3. 3

    انسخ أو حمّل

    انقر على «انسخ» لنقل YAML إلى الحافظة، أو «تحميل» لحفظه كملف .yaml جاهز لاستخدامه مع kubectl apply أو docker compose up أو أي أداة أخرى.

أخطاء التحويل الشائعة

الفواصل الزائدة

لا يسمح JSON بفاصلة بعد العنصر الأخير في كائن أو مصفوفة. هذا شائع جداً عند النسخ من كود JavaScript الذي يسمح بالفواصل الزائدة. احذف الفاصلة الأخيرة قبل التحويل.

✗ خطأ
{"name": "Alice", "role": "admin",}
✓ صحيح
{"name": "Alice", "role": "admin"}

علامات الاقتباس المفردة

يتطلب JSON علامات اقتباس مزدوجة لجميع قيم السلاسل النصية ومفاتيح الكائنات. علامات الاقتباس المفردة صالحة في JavaScript وPython، لكنها خطأ في صياغة JSON.

✗ خطأ
{'name': 'Alice', 'active': true}
✓ صحيح
{"name": "Alice", "active": true}

مفاتيح غير مقتبسة

يجب أن تكون جميع مفاتيح كائنات JSON محاطة بعلامات اقتباس مزدوجة. المفاتيح غير المقتبسة صالحة في كائنات JavaScript الحرفية لكنها تُسبب خطأ في التحليل في JSON الصارم.

✗ خطأ
{name: "Alice", role: "admin"}
✓ صحيح
{"name": "Alice", "role": "admin"}

التعليقات غير مسموح بها

لا يدعم JSON القياسي التعليقات بأي شكل — لا // ولا /* */ ولا #. إذا احتجت إلى تعليقات في الإعداد، استخدم YAML (الذي يدعم تعليقات #) أو JSONC. احذف جميع التعليقات قبل استخدام البيانات كـ JSON.

✗ خطأ
{"port": 8080 // HTTP port}
✓ صحيح
{"port": 8080}

مشكلة Norway في YAML (تُعالَج تلقائياً في وضع التلقائي)

في محللات YAML 1.1 (المستخدمة في Kubernetes وAnsible وPyYAML وRuby Psych)، تُحلَّل السلاسل النصية المجردة yes وno وon وoff وy وn كقيم منطقية بدلاً من سلاسل نصية. يضيف وضع «التلقائي» في هذه الأداة اقتباسات حول هذه القيم تلقائياً في إخراج YAML لضمان التحويل الآمن.

✗ خطأ
# JSON input: {"country": "no", "enabled": "yes"}
# YAML without quoting (dangerous):
country: no
enabled: yes
# YAML 1.1 parser reads: country=false, enabled=true
✓ صحيح
# YAML with Auto quoting (safe):
country: 'no'
enabled: 'yes'
# YAML 1.1 parser reads: country="no", enabled="yes"

فقدان دقة الأعداد الصحيحة الكبيرة

يستطيع JavaScript تمثيل الأعداد الصحيحة بدقة حتى 2^53 - 1 فقط (9007199254740991). تُقرَّب أعداد JSON الصحيحة الأكبر من ذلك — مثل حقل resourceVersion في Kubernetes الذي يكون من نوع int64 — بصمت عند تحليلها بـ JSON.parse(). الحل الآمن هو تخزين الأعداد الكبيرة كسلاسل نصية في JSON قبل التحويل.

✗ خطأ
// JSON input (resourceVersion is int64 on K8s server)
{"resourceVersion": 9007199254740993}
// JavaScript reads it as: 9007199254740992 (precision lost)
// YAML output will contain the wrong number
✓ صحيح
// Store large integers as strings to preserve precision
{"resourceVersion": "9007199254740993"}
// YAML output: resourceVersion: '9007199254740993' (exact)

حالات الاستخدام الشائعة

بيانات Kubernetes
تحويل استجابات JSON API من kubectl get -o json أو Kubernetes API إلى بيانات YAML لسير عمل GitOps وطبقات Kustomize ونشرات kubectl apply -f.
ملفات Docker Compose
تحويل إخراج docker inspect JSON أو إعدادات الخدمات المُنشأة برمجياً إلى ملفات docker-compose.yaml متوافقة مع docker compose up ونشرات Docker Stack.
قيم Helm Chart
تحويل تصديرات إعداد JSON إلى ملفات قيم YAML لنشرات Helm chart، مما يتيح إعداد البنية التحتية المُتحكَّم في إصداراته بصيغة YAML نظيفة.
سير عمل GitHub Actions
بناء تعريفات سير عمل GitHub Actions برمجياً بـ JSON وتحويلها إلى صيغة .github/workflows/*.yaml المطلوبة لمشغّل GitHub Actions.
مواصفات OpenAPI
تحويل مواصفات OpenAPI/Swagger من صيغة JSON التي تُعيدها كثير من الأُطر البرمجية (FastAPI، SpringDoc) إلى صيغة YAML المفضلة لـ Swagger UI وRedoc وأدوات بوابة API.
ترحيل الإعدادات
ترحيل إعداد التطبيق المُخزَّن في JSON (appsettings.json، config.json) إلى صيغة YAML للأدوات التي تتطلب أو تفضل YAML، مع إمكانية إضافة تعليقات للتوثيق.

تفاصيل تقنية

تحليل JSON متوافق مع RFC 8259
يُحلَّل مدخل JSON باستخدام JSON.parse() الأصلي في المتصفح، المتوافق كلياً مع RFC 8259. يوفر رسائل خطأ دقيقة في الصياغة تتضمن معلومات الموضع (رقم السطر والعمود بأفضل جهد ممكن)، ويتعامل مع جميع أنواع بيانات JSON: السلاسل النصية والأرقام والقيم المنطقية وnull والمصفوفات والكائنات.
إخراج YAML 1.2 عبر واجهة Document API من eemeli/yaml مع مخطط YAML 1.1
يُولَّد YAML باستخدام مكتبة eemeli/yaml (الإصدار v2.8+، آمن من الثغرات) عبر Document API مع version: '1.1'. ينتج هذا التوليف إخراجاً متوافقاً مع YAML 1.2 مع تطبيق قواعد اقتباس YAML 1.1 — أي أن سلاسل مشكلة Norway (yes/no/on/off/y/n) تُقتبَس تلقائياً في الإخراج، مما يجعله آمناً لمحللات YAML 1.1 وYAML 1.2.
100% قائم على المتصفح — بدون رفع ملفات أو خادم
تتم جميع المعالجة كلياً في محرك JavaScript بمتصفحك. لا تُرسَل أي بيانات عبر الشبكة في أي وقت. تتحول المدخلات الأكبر من 200 كيلوبايت تلقائياً من الوضع المباشر إلى الوضع اليدوي (مطلوب نقر «تحويل» صريح) للحفاظ على استجابة المتصفح ومنع تعطّل مسار التنفيذ الرئيسي أثناء التسلسل الثقيل.

أفضل الممارسات

استخدم دائماً وضع الاقتباس التلقائي لإعدادات DevOps
عند تحويل JSON للاستخدام في Kubernetes أو Helm أو Ansible أو Docker Compose أو GitHub Actions، استخدم دائماً وضع الاقتباس الافتراضي «التلقائي (آمن من مشكلة Norway)». ستُفسَّر السلاسل النصية المجردة yes وno وon وoff وy وn بصمت كقيم منطقية بواسطة محللات YAML 1.1 في هذه الأدوات — يمنع وضع التلقائي هذا بشفافية.
استخدم مسافة بادئة مسافتين للأدوات السحابية الحديثة
تستخدم Kubernetes وDocker Compose وGitHub Actions وHelm بالاتفاقية مسافتين للمسافة البادئة. استخدام 4 مسافات في هذه الملفات صالح بصيغة YAML لكنه يُنشئ عدم اتساق مع الأمثلة المجتمعية والإعدادات المُنشأة تلقائياً وبيانات فريقك الحالية.
خزّن الأعداد الصحيحة الكبيرة كسلاسل نصية قبل التحويل
يمكن أن تتجاوز حقول Kubernetes مثل resourceVersion وuid وحقول int64 الأخرى من خادم API نطاق الأعداد الصحيحة الآمنة في JavaScript (2^53 - 1). إذا كنت بحاجة إلى دقة عددية تامة، خزّن هذه القيم كسلاسل نصية في JSON قبل التحويل.
تحقق من JSON أولاً
إذا كان مصدر JSON مكتوباً يدوياً أو يأتي من نظام قد ينتج إخراجاً غير صالح أحياناً (فواصل زائدة، مفاتيح غير مقتبسة، تعليقات)، تحقق منه أولاً باستخدام منسق JSON. استخدم منسق JSON لاكتشاف أخطاء الصياغة وإصلاحها أولاً، ثم حوّل JSON النظيف إلى YAML.
فضّل أسلوب الكتلة للملفات في التحكم بالإصدارات
يُنتج YAML بأسلوب الكتلة فروقات نظيفة ومقروءة بشرياً في Git لأن كل حقل يظهر في سطره الخاص. يجعل أسلوب التدفق (المضغوط، المتضمن) الفروقات أصعب قراءةً ومراجعة. احتفظ بأسلوب التدفق لتضمين مقاطع YAML الصغيرة في التوثيق أو للأدوات التي تتطلب إخراجاً مضغوطاً.

الأسئلة الشائعة

كيف أحوّل JSON إلى YAML عبر الإنترنت؟
الصق بيانات JSON في حقل الإدخال أعلاه، وتقوم الأداة بتحويلها فوراً إلى YAML في متصفحك دون الحاجة إلى نقر أي زر. يمكنك ضبط المسافة البادئة (مسافتان أو 4 مسافات) وأسلوب الاقتباس (تلقائي أو مزدوج أو مفرد) والأسلوب (كتلة أو تدفق) من لوحة الخيارات. بمجرد ظهور YAML في منطقة الإخراج، انقر على «انسخ» لنقله إلى الحافظة أو «تحميل» لحفظه كملف .yaml. كل شيء يعمل محلياً — لا تغادر بياناتك جهازك أبداً.
ما هي مشكلة Norway في YAML؟ وكيف تتعامل هذه الأداة معها؟
مشكلة Norway في YAML تشير إلى خاصية غريبة في مواصفة YAML 1.1 حيث تُفسَّر السلاسل النصية المجردة مثل «no» و«yes» و«on» و«off» و«y» و«n» كقيم منطقية (false/true) بدلاً من سلاسل نصية. تسبّبت هذه الخاصية في مشكلة شهيرة حيث كان رمز الدولة الخاص بالنرويج (NO) يُقرأ كقيمة منطقية false في ملفات Ansible وإعدادات Kubernetes. يُصلح YAML 1.2 هذه المشكلة، لكن ملايين المحللات الإنتاجية (إصدارات Kubernetes القديمة، PyYAML، Ansible، Psych الخاص بـ Ruby) لا تزال تستخدم YAML 1.1. يُحلّ وضع الاقتباس التلقائي في هذه الأداة هذه المشكلة تلقائياً بإحاطة أي سلاسل من مشكلة Norway بعلامات اقتباس لضمان التوافق الآمن مع محللات YAML 1.1 وYAML 1.2.
لماذا تُعدّ مشكلة Norway مهمة لـ Kubernetes وDevOps؟
تُحلَّل بيانات Kubernetes YAML وقيم Helm chart وملفات تشغيل Ansible وسير عمل GitHub Actions بأدوات استخدمت تاريخياً YAML 1.1. إذا كان لديك مفتاح إعداد بالقيمة «no» (كرمز دولة أو علامة تفعيل في شكل سلسلة نصية)، فإن محلل YAML 1.1 سيحوّله بصمت إلى القيمة المنطقية false. قد يُسبّب هذا أخطاء في إعدادات الخدمة يصعب جداً تشخيصها، لأن ملف YAML يبدو صحيحاً عند عرضه نصياً لكنه يتصرف بشكل مختلف عند تحليله. استخدم دائماً وضع الاقتباس التلقائي عند تحويل JSON للاستخدام في Kubernetes أو أي سلسلة أدوات DevOps.
هل يجب استخدام مسافتين أم 4 مسافات للمسافة البادئة في YAML؟
استخدم مسافتين للمسافة البادئة في بيانات Kubernetes وقيم Helm وملفات Docker Compose وسير عمل GitHub Actions — فهذه الأدوات مبنية حول YAML بمسافتين وهو الاتفاقية المجتمعية. استخدم 4 مسافات لملفات تشغيل Ansible (التي تتبع اتفاقية 4 مسافات) وعندما يلزم دليل أسلوب الفريق أو المنظمة ذلك. يحظر YAML استخدام علامات الجدولة كلياً — يجب أن تكون جميع المسافات البادئة مسافات فعلية. تستخدم هذه الأداة افتراضياً مسافتين، وهو الخيار الصحيح لمعظم حالات استخدام الحوسبة السحابية الحديثة.
كيف أستخدم هذه الأداة لإنشاء بيان Kubernetes؟
إذا كان لديك تعريف موارد Kubernetes بصيغة JSON (من أمر kubectl get deployment my-app -o json أو استجابة API أو كتلة موارد Terraform)، الصقه في حقل الإدخال. اختر مسافة بادئة مسافتين (الافتراضي) واقتباساً تلقائياً (الافتراضي، الذي يتعامل مع مشكلة Norway). إخراج YAML جاهز فوراً للاستخدام مع kubectl apply -f. يمكنك أيضاً النقر على «تحميل» لحفظ الملف بامتداد .yaml وتوجيهه مباشرة إلى kubectl apply -f -.
كيف أحوّل ملف Docker Compose JSON إلى YAML؟
الصق بيانات Docker Compose JSON في حقل الإدخال. استخدم مسافة بادئة مسافتين (اتفاقية Docker Compose) والأسلوب الكتلي. إخراج YAML متوافق مع docker compose up وdocker compose config وDocker Stack. من السيناريوهات الشائعة تصدير إعدادات مجموعة خدمات قيد التشغيل باستخدام docker inspect ثم تحويلها إلى ملف compose.yaml.
هل تفقد الأرقام الكبيرة جداً (أكبر من 2^53) دقتها عند التحويل إلى YAML؟
نعم. هذا قيد أساسي في JavaScript: نوع Number في JavaScript يستخدم الفاصلة العائمة مزدوجة الدقة وفق IEEE 754، ويمكنه تمثيل الأعداد الصحيحة بدقة حتى 2^53 - 1 فقط (9007199254740991). أي عدد صحيح يتجاوز ذلك — مثل حقل resourceVersion في Kubernetes الذي يكون من نوع int64 على الخادم — سيُقرَّب بصمت عند تحليله بواسطة JSON.parse(). الحل الآمن هو تخزين الأعداد الكبيرة كسلاسل نصية في بيانات JSON قبل التحويل.
هل يحافظ المحوّل على ترتيب المفاتيح الأصلي من JSON؟
نعم. تحافظ مكتبة eemeli/yaml المستخدمة في هذه الأداة على ترتيب الإدراج، مما يتطابق مع سلوك JSON.parse() في جميع محركات JavaScript الحديثة (V8، SpiderMonkey، JavaScriptCore). تظهر المفاتيح في إخراج YAML بنفس الترتيب الذي ظهرت به في مدخل JSON. هذا مهم لبيانات Kubernetes ومواصفات OpenAPI حيث يكون ترتيب الحقول ذا معنى للقراءة والمقارنات.
متى يجب استخدام JSON بدلاً من YAML؟
استخدم JSON عند: بناء واجهات برمجية وخدمات ويب (JSON هو التنسيق العالمي لتبادل البيانات)، أو عندما تكون سرعة التحليل الآلي مهمة، أو عند الحاجة إلى أمان صارم للأنواع. استخدم YAML عند: كتابة ملفات إعداد مخصصة للتحرير البشري (بيانات Kubernetes، خطوط CI/CD، ملفات تشغيل Ansible، قيم Helm)، أو عندما تريد إضافة تعليقات في إعداداتك. قاعدة عملية مفيدة: إذا كتبه أو قرأه الحاسوب أولاً، استخدم JSON؛ وإذا كتبه إنسان وقرأه الحاسوب، استخدم YAML.
كيف أحوّل JSON إلى YAML في سطر الأوامر؟
الطريقة الأكثر شيوعاً هي الجمع بين yq وjq. ثبّت yq (إصدار Mike Farah، وليس نسخة Python): استخدم brew install yq على macOS أو wget لتنزيله على Linux. ثم نفّذ: cat input.json | yq -P للطباعة الجميلة بصيغة YAML. أو: yq -o yaml input.json أو cat input.json | python3 -c "import sys, json, yaml; yaml.dump(json.load(sys.stdin), sys.stdout, default_flow_style=False)". بالنسبة لـ Kubernetes تحديداً: يقوم الأمر kubectl get deployment my-app -o yaml بالتحويل مباشرة من API الكتلة.
كيف أحوّل JSON إلى YAML في Python أو Node.js أو Go؟
في Python: استخدم import json, yaml; yaml.dump(json.load(open('input.json')), open('output.yaml', 'w'), default_flow_style=False) مع PyYAML، أو ruamel.yaml للحصول على دقة عالية في التحويل ذهاباً وإياباً. في Node.js: استخدم import { Document } from 'yaml'; const doc = new Document(JSON.parse(input), { version: '1.1' }); const result = doc.toString({ indent: 2, lineWidth: 0 }) — وهو نفس المكتبة والأسلوب المستخدم في هذه الأداة. في Go: استخدم import gopkg.in/yaml.v3; json.Unmarshal(jsonBytes, &data); yaml.Marshal(data).
هل تُرسَل بيانات JSON إلى أي خادم عند استخدام هذه الأداة؟
لا. يتم التحويل كلياً في متصفحك باستخدام JavaScript. لا تُرسَل بيانات JSON عبر الشبكة، ولا تُخزَّن على أي خادم، ولا تُسجَّل أو تُحلَّل. هذا يجعل الأداة آمنة للاستخدام مع مفاتيح API وبيانات اعتماد قواعد البيانات وملفات الإعداد الداخلية وبيانات Kubernetes الإنتاجية وأي بيانات حساسة أخرى. يمكنك التحقق من ذلك بفتح تبويب «الشبكة» في متصفحك — لن ترى أي طلبات عند لصق JSON.
هل هناك حد لحجم ملف JSON المُدخَل؟
لا يوجد حد صارم لحجم الملف، لكن المدخلات الكبيرة (أكثر من 200 كيلوبايت) تتحول تلقائياً من وضع التحويل المباشر إلى الوضع اليدوي. في الوضع اليدوي، يظهر زر «تحويل» ويتم التحويل فقط عند النقر عليه — وهذا يمنع إيقاف مسار التنفيذ الرئيسي للمتصفح. للملفات الكبيرة جداً (بحجم ميجابايتات متعددة)، يُنصح باستخدام أدوات سطر الأوامر مثل yq أو jq للحصول على أداء أفضل.

أدوات ذات صلة

عرض جميع الأدوات →

محوّل Base64 — ترميز وفك ترميز أونلاين

الترميز والتنسيق

رمّز وفك ترميز Base64 مجاناً أونلاين — محوّل فوري مع دعم UTF-8 والرموز التعبيرية. خصوصية 100% — يعمل في متصفّحك. جرّبه الآن.

منسق JSON — التحقق والضغط وإصلاح الأخطاء

الترميز والتنسيق

نسّق JSON وتحقّق من صحته وأصلح الأخطاء فوراً — محرّر مجاني أونلاين يعمل في متصفّحك. يدعم الضغط والتجميل والتحويل. جرّبه الآن.

مرمّز ومفكك ترميز URL مع محلل روابط مدمج

الترميز والتنسيق

رمّز وفك ترميز روابط URL فوراً أونلاين — مع محلل روابط مدمج ووضعي encodeURI وencodeURIComponent. مجاني وخاص 100%. جرّبه الآن.

محوّل YAML إلى JSON

الترميز والتنسيق

الصق YAML واحصل على JSON فوراً. تحويل مباشر في متصفّحك. يدعم بيانات Kubernetes ومواصفات OpenAPI وقيم Helm. خصوصية 100%، بدون رفع ملفات.

محوّل الأنظمة العددية — ثنائي وست عشري وعشري وثماني

أدوات التحويل

حوّل بين الأنظمة الثنائية والست عشرية والعشرية والثمانية وأي أساس من 2 إلى 36 فوراً — أداة مجانية أونلاين تعمل في متصفّحك. جرّبها الآن.

ضغط الصور — JPEG وPNG وWebP

أدوات التحويل

اضغط صور JPEG وPNG وWebP أونلاين مجاناً — بياناتك لا تغادر متصفّحك أبداً. قلّل حجم الصورة حتى 80% مع الحفاظ على الجودة. معالجة دفعية لـ 20 صورة.