ToolDeck

YAML إلى JSON

تحويل YAML إلى تنسيق JSON

جرب مثالاً

إدخال YAML

إخراج JSON

يعمل محليًا · آمن للصق الأسرار
سيظهر JSON هنا…
جرب أيضاً:YAML to XML

ما هو تحويل YAML إلى JSON؟

تحويل YAML إلى JSON هو عملية تحويل البيانات المكتوبة بلغة YAML (اختصار لـ YAML Ain't Markup Language) إلى تنسيق JSON (تدوين كائنات JavaScript). يمثّل كلا التنسيقين البيانات الهيكلية على شكل أزواج مفتاح-قيمة ومتتاليات وكائنات متداخلة، غير أنهما يختلفان في الصياغة. يعتمد YAML على المسافات البادئة والترميز المحدود، بينما يستخدم JSON الأقواس المعقوفة والمربعة والاقتباسات الإلزامية. يُعدّ التحويل بين التنسيقين مهمة شائعة عند نقل بيانات الإعداد بين أنظمة تتطلب تنسيقات مختلفة.

صُمِّم YAML للقراءة البشرية. يدعم التعليقات والسلاسل متعددة الأسطر والمراسي والأسماء المستعارة، وهي ميزات لا وجود لها في JSON. عند تحويل YAML إلى JSON، تُحلَّل هذه الميزات الخاصة بـYAML: تُوسَّع المراسي بشكل مضمّن، وتُحذف التعليقات، وتصبح الكتل متعددة الأسطر سلاسل نصية مُهرَّبة. والمخرج هو JSON صالح يستطيع أي محلل JSON قراءته.

تُعرِّف مواصفة YAML 1.2 صراحةً JSON بوصفه مجموعة فرعية من YAML، مما يعني أن كل مستند JSON صالح هو أيضاً مستند YAML صالح. والعكس غير صحيح. مستندات YAML التي تستخدم التعليقات أو المراسي أو المفاتيح المعقدة لا يوجد لها ما يعادلها في JSON وتحتاج إلى تبسيط أثناء التحويل. تتولى هذه الأداة هذا التحويل تلقائياً، وتُنتج JSON نظيفاً ومنسقاً جيداً من أي إدخال YAML صالح.

YAML 1.2 Specification — yaml.org →

لماذا تستخدم محوّل YAML إلى JSON هذا؟

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

تحويل فوري في متصفحك
الصق YAML واحصل على مخرجات JSON منسّقة في أجزاء من الثانية. لا أدوات سطر أوامر لتثبيتها، ولا خطوات بناء، ولا اعتماديات لإدارتها.
🔀
يعالج أي بنية YAML صالحة
يدعم التعيينات المتداخلة والمتتاليات والسلاسل متعددة الأسطر (الكتل الحرفية والمطوية) والمراسي والأسماء المستعارة ومفاتيح الدمج وجميع أنواع القيم الأصلية في YAML 1.2.
🔒
بياناتك تبقى خاصة
تجري عملية التحليل بالكامل محلياً في متصفحك باستخدام JavaScript. محتوى YAML الخاص بك لا يُرسَل أبداً إلى أي خادم، مما يجعله آمناً لملفات الإعداد التي تحتوي على بيانات اعتماد أو مسارات داخلية.
📋
نسخ المخرجات أو ضبط تنسيقها
يمكنك التبديل بين مسافة بادئة من مسافتين أو أربع مسافات. انسخ نتيجة JSON إلى الحافظة بنقرة واحدة للاستخدام المباشر في الكود أو طلبات API أو ملفات الإعداد.

حالات استخدام تحويل YAML إلى JSON

تطوير الواجهة الأمامية
تحويل ملفات إعداد YAML من نظام تصميم أو CMS إلى JSON لاستهلاكها من قِبل حزم JavaScript أو REST APIs أو مكتبات i18n التي تتطلب إدخال JSON.
هندسة الواجهة الخلفية
تحويل application.yml الخاص بـSpring Boot أو database.yml الخاص بـRails إلى JSON لتغذيته في سكربتات النشر أو بوابات API أو الخدمات التي تقبل إعدادات JSON فقط.
DevOps وCI/CD
تحويل docker-compose.yml أو سير عمل GitHub Actions أو بيانات Kubernetes إلى JSON لأدوات التحقق ومحركات السياسات كـOPA أو التصحيح باستخدام jq.
ضمان الجودة والاختبار
تحويل تجهيزات اختبار YAML إلى حمولات JSON لأدوات اختبار API كـPostman وInsomnia أو مجموعات الاختبار الآلي التي تتوقع أجسام طلبات JSON.
هندسة البيانات
تحويل تعريفات خطوط أنابيب YAML (Airflow وdbt وDagster) إلى JSON للتحقق من المخطط أو التعامل البرمجي أو التكامل مع فهارس البيانات الوصفية.
التعلّم والتوثيق
مشاهدة كيفية تناظر بنى YAML مع ما يقابلها في JSON بسرعة، عند دراسة تنسيقات الإعداد أو كتابة الوثائق.

مرجع ربط أنواع YAML بـJSON

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

نوع YAMLصياغة YAMLمخرجات JSON
Mappingname: Alice{ "name": "Alice" }
Sequence- apple\n- banana["apple", "banana"]
Stringgreeting: hello world"hello world"
Integercount: 4242
Floatratio: 3.143.14
Booleanactive: truetrue
Nullvalue: nullnull
Multiline (|)bio: |\n Line one\n Line two"Line one\nLine two\n"
Folded (>)note: >\n A long\n paragraph"A long paragraph\n"
Anchor/Alias&default\n <<: *defaultResolved inline (no $ref)

صياغة YAML مقابل JSON

يمثّل YAML وJSON نموذج البيانات ذاته لكن بقواعد صياغة مختلفة. الفوارق أدناه تشرح سبب عدم وجود ما يعادل بعض ميزات YAML — كالتعليقات والمراسي — في JSON.

YAML
يستخدم المسافات البادئة للتداخل (بلا أقواس معقوفة). يدعم التعليقات بـ#. لا تحتاج السلاسل النصية عادةً إلى اقتباسات. يتيح قيماً متعددة الأسطر بـ| (حرفي) و> (مطوي). يدعم المراسي (&name) والأسماء المستعارة (*name) لإعادة الاستخدام. في YAML 1.2، تُعرَّف true وfalse فقط كقيم منطقية؛ كانت المحللات القديمة لـYAML 1.1 تقبل أيضاً yes وno وon وoff، لكنها تُعامَل كسلاسل نصية عادية في YAML 1.2.
JSON
يستخدم الأقواس المعقوفة والمربعة للتداخل. لا صياغة للتعليقات. يجب أن تكون جميع السلاسل النصية بين علامتَي اقتباس مزدوجتين. لا سلاسل نصية حرفية متعددة الأسطر — استخدم تسلسلات الإفلات \n بدلاً منها. لا آلية للمراسي أو الأسماء المستعارة. القيم المنطقية هي true وfalse بأحرف صغيرة حصراً. يجب أن تكون جميع المفاتيح سلاسل نصية بين اقتباسات. الفواصل الزائدة غير صالحة.

أمثلة على الكود

فيما يلي أمثلة عملية لتحويل YAML إلى JSON برمجياً. كل مثال يُحلِّل سلسلة YAML ويُخرج JSON منسّقاً.

JavaScript (Node.js)
import { load } from 'js-yaml'

const yamlStr = `
server:
  host: localhost
  port: 8080
  ssl: true
`

const json = JSON.stringify(load(yamlStr), null, 2)
console.log(json)
// → {
// →   "server": {
// →     "host": "localhost",
// →     "port": 8080,
// →     "ssl": true
// →   }
// → }
Python
import yaml, json

yaml_str = """
database:
  host: db.example.com
  port: 5432
  credentials:
    user: admin
    password: s3cret
"""

data = yaml.safe_load(yaml_str)
print(json.dumps(data, indent=2))
# → {
# →   "database": {
# →     "host": "db.example.com",
# →     "port": 5432,
# →     "credentials": {
# →       "user": "admin",
# →       "password": "s3cret"
# →     }
# →   }
# → }
Go
package main

import (
	"encoding/json"
	"fmt"
	"log"
	"gopkg.in/yaml.v3"
)

func main() {
	yamlData := []byte(`
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
`)

	var obj map[string]interface{}
	if err := yaml.Unmarshal(yamlData, &obj); err != nil {
		log.Fatal(err)
	}
	jsonBytes, _ := json.MarshalIndent(obj, "", "  ")
	fmt.Println(string(jsonBytes))
	// → { "services": { "web": { "image": "nginx:latest", "ports": ["80:80"] } } }
}
CLI (yq + jq)
# Convert a YAML file to JSON with yq
yq -o=json config.yaml > config.json

# Pipe YAML into yq for one-off conversion
echo "name: demo" | yq -o=json
# → { "name": "demo" }

# Python one-liner (no extra install on most systems)
python3 -c "import yaml, json, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < config.yaml

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

هل YAML مجموعة شاملة من JSON؟
نعم، منذ إصدار YAML 1.2 (نُشر عام 2009). كل مستند JSON صالح هو أيضاً مستند YAML صالح. حُدِّثت مواصفة YAML بقصد ضمان التوافق الكامل مع JSON. غير أن العكس غير صحيح — ميزات YAML كالتعليقات والمراسي والمفاتيح غير المقتبَسة لا يوجد لها ما يعادلها في JSON.
ماذا يحدث لتعليقات YAML أثناء التحويل؟
تُحذف التعليقات. لا توجد صياغة للتعليقات في JSON، لذا تضيع أي أسطر تبدأ بـ# في إدخال YAML أثناء التحويل. إذا احتجت إلى الحفاظ على التعليقات، احتفظ بملف YAML الأصلي كمصدر حقيقة وأنشئ JSON منه عند الحاجة.
كيف تُعالَج مراسي YAML وأسماؤه المستعارة؟
تُحلَّل المراسي (&name) والأسماء المستعارة (*name) أثناء التحليل. يُستبدَل الاسم المستعار بنسخة كاملة من البيانات المُرسَاة. لا يحتوي JSON الناتج على أي إشارات — كل القيم مُضمَّنة مباشرةً. تُحلَّل مفاتيح الدمج (<<: *name) بالطريقة ذاتها.
هل يمكن أن يُفقَد أي بيانات عند تحويل YAML إلى JSON؟
بالنسبة لقيم البيانات، لا. جميع أنواع القيم الأصلية في YAML (السلاسل النصية والأرقام والقيم المنطقية والقيم الفارغة) لها ما يعادلها في JSON. ما يُفقَد: التعليقات وتوجيهات الوسوم وأسماء المراسي والتمييز بين الأسلوب الكتلي وأسلوب التدفق. إذا كان YAML الخاص بك يعتمد على وسوم مخصصة (!!python/object وغيرها)، فستُحلَّل إلى قيم عادية أو قد تُسبّب خطأ في التحليل بحسب المحلل.
لماذا تصبح القيمة المنطقية 'yes' في YAML سلسلة نصية في JSON؟
تستخدم هذه الأداة js-yaml الإصدار الرابع، الذي يتبع تحليل القيم المنطقية وفق YAML 1.2. تُعرَّف true وfalse فقط كقيم منطقية بصرف النظر عن حالة الأحرف. تُعامَل القيم مثل yes وno وon وoff كسلاسل نصية عادية وتظهر كسلاسل مقتبَسة في مخرجات JSON. إذا رأيت قيم سلاسل نصية غير متوقعة حيث توقعت قيماً منطقية، غيّر إلى true أو false في مصدر YAML.
ما أقصى حجم لملف YAML يمكن لهذه الأداة معالجته؟
تعمل الأداة في متصفحك، لذا يعتمد الحد على الذاكرة المتاحة لجهازك. تُحوَّل الملفات حتى بضعة ميغابايت دون مشاكل. للملفات الكبيرة جداً (50 ميغابايت فأكثر)، سيكون أداة سطر أوامر كـyq أو سكربت Python مع PyYAML أكثر موثوقية لأنها تستطيع بث البيانات بدلاً من تحميل كل شيء في الذاكرة دفعة واحدة.
كيف تُحوَّل السلاسل المتعددة الأسطر في YAML إلى JSON؟
يمتلك YAML أسلوبَين للكتل متعددة الأسطر. الكتل الحرفية (|) تحفظ فواصل الأسطر كمحارف \n في سلسلة JSON. الكتل المطوية (>) تستبدل فواصل الأسطر المفردة بمسافات، فتحوّل السطور المتعددة إلى فقرة واحدة. يُضيف كلا الأسلوبين سطراً جديداً في النهاية افتراضياً، يمكنك حذفه بمؤشر القطع (|- أو >-).