محوّل JSON إلى YAML
الصق JSON واحصل على YAML فوراً. تحويل مباشر في متصفّحك، جاهز لـ Kubernetes وDocker Compose، مع حماية من مشكلة Norway. خصوصية 100%.
الخيارات · مسافتان · تلقائي · كتلة
ما هو 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
الصق بيانات JSON
أدخل أو الصق بيانات JSON في حقل الإدخال أعلاه. يمكنك أيضاً النقر على «تحميل مثال» لتجربة عينة كنشر Kubernetes أو ملف Docker Compose أو خطة Terraform.
- 2
شاهد إخراج YAML مباشرة
يظهر YAML فوراً في لوحة الإخراج. اضبط الخيارات (المسافة البادئة 2/4، الاقتباس تلقائي/مزدوج/مفرد، الأسلوب كتلة/تدفق) لتتطابق مع متطلبات الأداة المستهدفة.
- 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 عبر الإنترنت؟
ما هي مشكلة Norway في YAML؟ وكيف تتعامل هذه الأداة معها؟
لماذا تُعدّ مشكلة Norway مهمة لـ Kubernetes وDevOps؟
هل يجب استخدام مسافتين أم 4 مسافات للمسافة البادئة في YAML؟
كيف أستخدم هذه الأداة لإنشاء بيان Kubernetes؟
كيف أحوّل ملف Docker Compose JSON إلى YAML؟
هل تفقد الأرقام الكبيرة جداً (أكبر من 2^53) دقتها عند التحويل إلى YAML؟
هل يحافظ المحوّل على ترتيب المفاتيح الأصلي من JSON؟
متى يجب استخدام JSON بدلاً من YAML؟
كيف أحوّل JSON إلى YAML في سطر الأوامر؟
كيف أحوّل JSON إلى YAML في Python أو Node.js أو Go؟
هل تُرسَل بيانات JSON إلى أي خادم عند استخدام هذه الأداة؟
هل هناك حد لحجم ملف JSON المُدخَل؟
أدوات ذات صلة
عرض جميع الأدوات →محوّل 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 صورة.