محول YAML إلى TOML
حوّل البيانات من YAML إلى TOML فورًا أثناء الكتابة، مباشرة في متصفحك.
الإدخال
الإخراج
ملف القراءة
ما هذه التنسيقات للبيانات؟
تخزّن البرامج البيانات المنظّمة وتتبادلها، مثل الإعدادات والسجلات والقوائم، باستخدام تنسيقات نصية يكتب كلٌّ منها البيانات بطريقته الخاصة. يفيد المحوّل عندما يقدّم أحد البرامج بيانات بتنسيق لا يستطيع برنامج آخر قراءته، أو عندما يكون أحد التنسيقات أسهل في القراءة أو التحرير للمهمة المطلوبة.
| التنسيق | طريقة كتابة البيانات | أين تراه |
|---|---|---|
| JSON | كائنات بين أقواس معقوفة، وقوائم بين أقواس مربعة، ونصوص بين علامتي اقتباس مزدوجتين | واجهات API للويب وإعدادات التطبيقات |
| YAML | أسطر key: value بمسافات بادئة، وعناصر القوائم التي تبدأ بـ - |
ملفات Docker Compose وKubernetes وخطوط أنابيب CI |
| XML | عناصر داخل وسوم، يمكن أن تحتوي على سمات | المستندات وموجزات RSS وخدمات الويب SOAP |
| TOML | أسطر key = value تحت عناوين [table] |
ملفات الإعدادات مثل Cargo.toml وpyproject.toml |
| TOON | أسطر بمسافات بادئة، وقوائم من السجلات على هيئة صفوف تحت حقولها | البيانات المنظّمة المرسلة إلى نماذج اللغة للذكاء الاصطناعي |
| CSV | صفّ للعناوين، ثم سطر لكل سجل، مع فصل القيم بفواصل | جداول البيانات وعمليات تصدير قواعد البيانات |
| TSV | مثل CSV، لكن مع علامات جدولة بين القيم | الخلايا المنسوخة من جدول بيانات |
| MessagePack | بيانات ثنائية، معروضة هنا على هيئة بايتات بالنظام الست عشري | الرسائل المدمجة المتبادلة بين البرامج |
| JSON5 | JSON يتيح أيضًا التعليقات وعلامات الاقتباس المفردة والمفاتيح من دون علامات اقتباس | ملفات الإعدادات المكتوبة يدويًا |
| JSONL | قيمة JSON واحدة في كل سطر، ويُسمى أيضًا JSON Lines أو NDJSON | السجلات ومجموعات البيانات |
| INI | أسطر key = value تحت عناوين [section] |
ملفات إعدادات البرامج، مثل php.ini |
| Properties | أسطر key = value بمفاتيح مفصولة بنقاط |
تطبيقات Java، مثل ملفات application.properties في Spring Boot |
وصف الأداة
تحوّل هذه الأداة البيانات بين 12 تنسيقًا: JSON وYAML وXML وTOML وTOON وCSV وTSV وMessagePack وJSON5 وJSONL وINI وخصائص Java. تعمل جميع محوّلات تنسيقات البيانات هنا بالطريقة نفسها، بدءًا من محوّل تنسيقات البيانات العام وصولًا إلى المحوّلات المخصّصة لزوج واحد، مثل التحويل من JSON إلى YAML، أو من CSV إلى JSON، أو من XML إلى JSON: تبدأ الأداة بالتنسيقات المذكورة في اسمها، وتتيح قائمتا المصدر والهدف التبديل إلى أي تنسيق آخر. ألصق بياناتك أو اكتبها، وستظهر النتيجة أثناء الكتابة في محرر تعليمات برمجية مع تمييز بناء الجملة، لتكون جاهزة للنسخ. يبدّل زر التبديل اتجاه التحويل ويجعل النتيجة هي المدخل الجديد.
إذا لم يكن المدخل صالحًا بالتنسيق المصدر، فستوضح رسالة الخطأ المشكلة، مع ذكر السطر والعمود اللذين تقع فيهما عادةً.
تُحوَّل بياناتك في متصفحك ولا تُرفع أبدًا.
مثال
يتحوّل JSON هذا:
{
"users": [
{ "id": 1, "name": "Ann", "admin": true },
{ "id": 2, "name": "Bo", "admin": false }
]
}إلى YAML هذا:
users:
- id: 1
name: Ann
admin: true
- id: 2
name: Bo
admin: falseوإلى CSV هذا، مع صف لكل مستخدم:
id,name,admin
1,Ann,true
2,Bo,falseوإلى TOON هذا:
users[2]{id,name,admin}:
1,Ann,true
2,Bo,falseكيفية تحويل البيانات بين التنسيقات
لا تخزّن التنسيقات كلها الأنواع نفسها من البيانات، لذا تتبع بعض التحويلات القواعد التالية:
- CSV وTSV يخزّنان البيانات في جدول. يحدّد الصف الأول أسماء الأعمدة، ويصبح كل صف آخر كائنًا. تتحول الكائنات المتداخلة إلى أعمدة تُسمّى بحسب مسارها، وتتحول القوائم إلى نص JSON داخل خلاياها، لذا يتحول
{"name": "Ann", "address": {"city": "Oslo"}, "tags": ["a", "b"]}إلى الأعمدةnameوaddress.cityوtags. وعند تحويلها مجددًا، تصبح هذه الأعمدة كائنات متداخلة وقوائم مرة أخرى. عندما تكون البيانات كائنًا يحتوي على قائمة واحدة، مثل{"users": [...]}، تكون الصفوف عناصر تلك القائمة، وتتحول قائمة القوائم إلى صفوف من دون عناوين. - القيم النصية: لا تخزّن تنسيقات CSV وTSV وXML وINI وProperties إلا النصوص، لذا تحوّل المحوّلات
trueوfalseإلى قيمتين منطقيتين، والأعداد المكتوبة بصيغتها العادية، مثل42أو3.5، إلى أعداد. وتظل القيم مثل007و1.50و1e3نصوصًا، كي تحتفظ الرموز البريدية وأرقام الإصدارات بصيغتها الدقيقة. - تتحول سمات XML إلى مفاتيح تبدأ بـ
@، ويتحول نص العنصر الذي يحتوي على سمات إلى#text: يتحول<price currency="USD">44.95</price>إلى{"@currency": "USD", "#text": 44.95}. وتتحول العناصر المتكررة إلى قائمة. وعند التحويل إلى XML، تصبح المفاتيح التي تبدأ بـ@سمات مرة أخرى. ويصبح الكائن الذي يحتوي على مفتاح واحد فقط، لا تكون قيمته قائمة، هو العنصر الجذر. وتوضع البيانات الأخرى داخل عنصر<root>، مع وضع كل عنصر من عناصر القائمة العليا داخل عنصر<item>. وتتحول الأحرف التي لا يُسمح بها في أسماء XML، مثل المسافات، إلى_. - لا يمكن لتنسيقات TOML وINI وProperties تخزين سوى القيم ذات الأسماء في المستوى الأعلى، لذا تُكتب البيانات التي تكون على هيئة قائمة تحت الاسم
items، والقيمة المفردة تحت الاسمvalue. لا يدعم TOML القيمة null، لذا تُحذف القيم null. - يكتب INI الكائنات المتداخلة على هيئة أقسام، مثل
[server.ssl]، وقوائم القيم على هيئة أسطرkey[] = value، وقوائم الكائنات على هيئة أقسام تُسمّى وفقًا لمواضعها، مثل[users.0]. - تجمع مفاتيح Properties الأسماء المتداخلة باستخدام النقاط، وتُرقّم عناصر القوائم بين أقواس مربعة، مثل
app.hosts[0]، على طريقة Spring Boot. وعند تحويلها إلى YAML أو JSON، تصبح هذه المفاتيح كائنات متداخلة وقوائم، لذا يتحول ملفapplication.propertiesإلى البنية نفسها لملفapplication.yml. وتُكتب الأحرف خارج مجموعة Latin-1 بصيغة الهروب\u. - تضع نتائج YAML علامات اقتباس حول النصوص التي قد يفسّرها قارئو YAML 1.1 على أنها شيء آخر، مثل
onأوyesأو تاريخ، كي يحصل قارئو YAML 1.1 وYAML 1.2 على البيانات نفسها. ويتحول ملف YAML الذي يحتوي على عدة مستندات تفصل بينها---إلى قائمة من تلك المستندات، كما تُملأ مفاتيح الدمج<<. - تنسيق MessagePack ثنائي، لذا تقرأه الأدوات وتكتبه على هيئة بايتات بالنظام الست عشري: تتحول
{"a": 1}إلى81 A1 61 01. ويمكن أن يحتوي المدخل على مسافات وفواصل و0xقبل كل بايت. وتتحول عدة رسائل متتالية إلى قائمة. - تحتوي نتائج JSONL على كل عنصر من عناصر القائمة في سطر مستقل.
- تحتفظ الأعداد الصحيحة الأكبر من أن تستوعبها أعداد JavaScript، مثل المعرّفات ذات 64 بت، بجميع خاناتها.
- تتحول تواريخ وأوقات TOML والطوابع الزمنية في MessagePack إلى نصوص، مثل
1979-05-27T07:32:00Z.
نصائح
- لتحويل خلايا من جدول بيانات، انسخها والصقها بصيغة TSV: تنسخ تطبيقات جداول البيانات الخلايا كنص مفصول بعلامات جدولة.
- يناسب CSV وTSV البيانات التي تكون على هيئة قائمة من سجلات متشابهة. أما البيانات المتداخلة بعمق فتُقرأ بسهولة أكبر بصيغة YAML أو TOML أو TOON.
- لا تُحفَظ التعليقات في ملفات YAML وXML وTOML وJSON5 وINI وProperties، لأن المحوّلات تنقل البيانات فقط.