ما هذه التنسيقات للبيانات؟

تخزّن البرامج البيانات المنظّمة وتتبادلها، مثل الإعدادات والسجلات والقوائم، باستخدام تنسيقات نصية يكتب كلٌّ منها البيانات بطريقته الخاصة. يفيد المحوّل عندما يقدّم أحد البرامج بيانات بتنسيق لا يستطيع برنامج آخر قراءته، أو عندما يكون أحد التنسيقات أسهل في القراءة أو التحرير للمهمة المطلوبة.

التنسيق طريقة كتابة البيانات أين تراه
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، لأن المحوّلات تنقل البيانات فقط.