كيف تحوّل YAML إلى JSON والعكس؟
حوّل YAML إلى صيغة الأقواس المعقوفة التي تقرؤها التطبيقات أو بالعكس: في المثال يحتفظ قسم الخادم بالمضيف example.com والمنفذ 8080 متداخلين، ويبقى 8080 رقمًا. أما التعليقات التي لا تنتقل فيُبلَّغ عنها ولا تضيع بصمت. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم
دون كسر الإزاحة
طريقتان لكتابة البيانات نفسها
صُمم YAML، الذي نُشر أول مرة سنة 2001، ليقرأه الناس ويعدّلوه بأيديهم: إزاحة بدل الأقواس، ومكان للتعليقات بجانب كل إعداد. أما صيغة الأقواس المعقوفة التي تقرؤها معظم التطبيقات فهي العكس: صارمة ومريحة للبرامج لكنها متعبة عند التعديل اليدوي. ملفات Kubernetes ومسارات GitHub Actions وملفات docker-compose كلها مكتوبة بـ YAML، ولا تستطيع لوحات المتابعة وأدوات الفحص ومحررات الإعداد المصممة للصيغة الأخرى قراءتها مباشرة. كما تبدأ إعدادات كثيرة بصيغة الأقواس وتحتاج إلى أن تصبح YAML عندما تصل إلى خط نشر لا يفهم غيرها.
ما الذي ينجو من التحويل وما الذي لا ينجو
تنتقل البنية وأنواع القيم كما هي. في المثال يحتفظ قسم الخادم بالمضيف example.com والمنفذ 8080 داخله، ويبقى المنفذ رقمًا والإعداد المفعّل صحيحًا. أما التعليقات فأمرها مختلف، إذ لا مكان لها في صيغة الأقواس، فلا تنتقل مع البيانات. وبدل أن تختفي دون كلمة، تُدرج في تقرير قصير مع بعض مراسي YAML التي لا تنجو أيضًا. ويُستنتج اتجاه التحويل مما تلصقه، أو تحدده بنفسك. احتفظ بملف YAML الأصلي إذا كانت تعليقاته مهمة لك.
الاستخدام من الصفحة مباشرة
تجري المعالجة داخل متصفحك: لا يغادر الكود جهازك، ولا حدّ لعدد المرات، ولا حاجة لتسجيل. تناسب ملفات تصل حتى 25 MB، وتعمل من الجوال بالطريقة نفسها التي تعمل بها من الحاسوب. يمكن تبديل اتجاه التحويل فورًا لمراجعة الملف من الصيغتين معًا دون إعادة لصق الكود من جديد.
مناسب لخطوط النشر الآلية
من يدير خط نشر آلي يحتاج تحويل ملفات إعداد بانتظام ضمن سكربت، لا لصقًا يدويًا كل مرة. يصلح هذا أيضًا لسكربت يولّد نسختين من الإعداد نفسه تلقائيًا: واحدة يقرؤها الإنسان وأخرى يقرؤها النظام، دون أي خطر من انحراف بينهما بمرور الوقت.
الأسئلة الشائعة
كيف تعرف الأداة أي صيغة أدخلتَ؟
تكتشف الصيغة تلقائيًا من بنية الكود الملصق، دون الحاجة لتحديدها يدويًا.
هل يمكن أن تكسر الإزاحة ملف YAML الناتج؟
لا، تُضبط الإزاحة تلقائيًا بقواعد ثابتة، فينتج ملف صحيح البنية من أول مرة.
هل يُرسل ملفي إلى خادم؟
لا، عند الاستخدام من هذه الصفحة تجري المعالجة داخل متصفحك فقط.
هل يعمل من الجوال؟
نعم، بالطريقة نفسها التي يعمل بها من الحاسوب.
ماذا يحدث لتعليقات YAML؟
لا مقابل لها في الصيغة الأخرى، لذا لا يمكن أن تنتقل مع البيانات. وبدل أن تختفي بصمت، يُبلَّغ عنها في تقرير قصير مع بعض المراسي التي لا تنجو من التحويل أيضًا.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/data/yaml-json \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"yaml":"a: 1","json":{"a":1}}'const res = await fetch("https://api.kit.forhosting.com/data/yaml-json", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"yaml": "a: 1",
"json": {
"a": 1
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/yaml-json",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"yaml": "a: 1",
"json": {
"a": 1
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/yaml-json", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"yaml":"a: 1","json":{"a":1}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"yaml":"a: 1","json":{"a":1}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/yaml-json", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"yaml": "a: 1",
"json": {
"a": 1
}
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.yaml_json",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 25 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
أداة تحوّل بين YAML وJSON في الاتجاهين: تكتشف صيغة الكود الملصق تلقائيًا وتنتج الصيغة المقابلة محافظة على ترتيب المفاتيح ونوع القيم. تعمل داخل متصفحك مباشرة، وتناسب من يضبط ملفات إعداد لخدمات سحابية أو خطوط نشر تتطلب أحيانًا YAML وأحيانًا JSON للنظام نفسه.
لماذا يحتاج ملف الإعداد الواحد صيغتين
تفضّل أدوات مثل Docker Compose وKubernetes صيغة YAML لسهولة قراءتها البشرية، بينما تتوقع واجهات برمجية كثيرة وأنظمة أخرى JSON كصيغة تبادل قياسية. من يضبط خط نشر واحدًا يجد نفسه أحيانًا محتاجًا الصيغة نفسها بشكلين مختلفين: نسخة YAML للمطور الذي يعدّلها يدويًا، ونسخة JSON للنظام الذي يقرأها آليًا. هذا التحويل يحافظ على المطابقة التامة بين النسختين دون إعادة كتابة يدوية عرضة للخطأ.
خطر الإزاحة في YAML عند التحويل اليدوي
يعتمد YAML على إزاحة المسافات لتحديد التسلسل الهرمي للبيانات، ومسافة واحدة زائدة أو ناقصة تغيّر معنى الملف كاملًا دون أي رسالة خطأ واضحة أحيانًا. عند التحويل من JSON إلى YAML، تضبط الأداة الإزاحة تلقائيًا بقواعد ثابتة، فينتج ملف صحيح البنية من أول مرة. وعند التحويل بالاتجاه المعاكس، تُقرأ الإزاحة بدقة قبل تحويلها لبنية JSON المتداخلة، فلا يضيع أي مستوى من مستويات التسلسل الهرمي الأصلي.
الاستخدام من الصفحة مباشرة
ألصق كود YAML أو JSON، شغّل الأداة، وانسخ النتيجة في الصيغة المقابلة أو نزّلها.
الأتمتة عبر الـAPI لخطوط النشر
نفس المحرك متاح عبر الـAPI بسعر ثابت قدره $0.002 للمستند الواحد، دون اشتراك شهري، مناسب لنظام تكامل مستمر يحوّل ملفات إعداد قبل كل نشر.
حالات التكامل
توليد ملف إعداد Kubernetes من نظام JSON
يولّد نظام داخلي في شركة الخليج الرقمية إعدادات بصيغة JSON، ويحوّلها فريق العمليات إلى YAML عبر الـAPI قبل تطبيقها في عنقود Kubernetes.
مراجعة ملف Docker Compose كـJSON
يحوّل خالد العتيبي ملف Docker Compose بصيغة YAML إلى JSON لمراجعته ببرنامج مقارنة يتعامل مع JSON فقط، ثم يعيده YAML بعد التعديل.
توثيق إعداد تطبيق للفريق
يوثّق مطوّر في مؤسسة النخيل للمقاولات إعداد تطبيق داخلي بصيغة YAML سهلة القراءة، بعد أن كان محفوظًا بصيغة JSON مضغوطة لا يفهمها زملاؤه بسهولة.
أسئلة تقنية
هل الأداة مجانية؟
نعم، داخل المتصفح بلا حدّ وبلا تسجيل. المدفوع فقط عبر الـAPI بسعر $0.002 للمستند.
هل تدعم الأداة التعليقات داخل YAML؟
تُحذف التعليقات عند التحويل إلى JSON لأن هذه الصيغة لا تدعمها، وهو سلوك متوقع لا خطأ في الأداة.
ما أقصى حجم ملف مدعوم؟
25 ميغابايت في الطلب الواحد.