ما الذي يتغير عند تحويل البيانات بين JSON وCSV وYAML وXML؟
الصيغ الأربع تمثّل البيانات بطرق مختلفة: JSON وYAML تحملان التداخل والأنواع، وCSV جدول مسطّح من النصوص، وXML يفرّق بين العناصر والسمات. لذلك يضطر المحوّل إلى اتخاذ قرارات — كيف تُسطَّح الكائنات المتداخلة إلى أعمدة، وكيف تُفسَّر "42" و"true"، وأين تُوضع السمات — والقرار الصحيح يعتمد على ما يتوقعه النظام المستقبِل.
كيفية استخدام محوّل XML إلى JSON
- الصق مستند XML.
- حدد ما إذا كنت تريد الاحتفاظ بالسمات وتحليل الأرقام/القيم المنطقية، وأي العناصر يجب أن تكون مصفوفات دائماً.
- انسخ JSON أو نزّله.
<product> الواحد يصبح كائناً والاثنان يصبحان مصفوفة؛ وإدراج product في «عناصر دائماً كمصفوفة» يعطي مصفوفة في كل مرة.يظهر مرة واحدة
عنصر <product> واحد داخل <catalog>
"product": {
"name": "Keyboard",
"@_id": "p-1"
}
- عناصر دائماً كمصفوفة:
- فارغ
productفي JSON:- كائن
متكرر
عنصرا <product> شقيقان، كما في المثال
"product": [
{
"name": "Keyboard",
"@_id": "p-1"
},
{
"name": "Mouse",
"@_id": "p-2"
}
]
- عناصر دائماً كمصفوفة:
- فارغ
productفي JSON:- مصفوفة بقيمتين
مرة واحدة مع فرض المصفوفة
عنصر <product> الواحد نفسه، مع إدراج product في «عناصر دائماً كمصفوفة»
"product": [
{
"name": "Keyboard",
"@_id": "p-1"
}
]
- عناصر دائماً كمصفوفة:
productproductفي JSON:- مصفوفة بقيمة واحدة
كل مربع شيفرة هو ما يقع تحت "catalog" في مخرجات الأداة نفسها لذلك المستند بالخيارات الافتراضية؛ والسمة id تصبح "@_id".
مزايا محوّل XML إلى JSON
- فحص سلامة البنية مع رقم السطر والعمود لملفات XML غير سليمة البنية
- الحفاظ على السمات بالبادئة @_ (أو إسقاطها عند الطلب)
- العناصر الفرعية المتكررة تصبح مصفوفات؛ مع إمكانية فرض المصفوفات لأسماء عناصر محددة
- تحويل اختياري للقيم النصية الرقمية والمنطقية
- فك ترميز محتوى CDATA والكيانات
- ملخص بالعنصر الجذر وعدد العناصر والعمق
مثال على محوّل XML إلى JSON
كتالوج يحتوي على سمات وعناصر متكررة
الإدخال:
<catalog><product id="p-1"><name>Keyboard</name></product><product id="p-2"><name>Mouse</name></product></catalog>النتيجة:
{
"catalog": {
"product": [
{ "name": "Keyboard", "@_id": "p-1" },
{ "name": "Mouse", "@_id": "p-2" }
]
}
}الأسئلة الشائعة حول محوّل XML إلى JSON
كيف تُمثَّل السمات؟
تصبح السمات مفاتيح مسبوقة بـ @_ (مثل "@_id"). وإذا كان للعنصر سمات ونص معاً، يُخزَّن النص تحت "#text". ويمكنك أيضاً إسقاط السمات كلياً.
لماذا يظهر عنصر ككائن وآخر كمصفوفة؟
تُجمع العناصر الشقيقة المتكررة في مصفوفة؛ أما العنصر الذي يظهر مرة واحدة فيبقى كائناً. أدرج أسماء العناصر في حقل «عناصر دائماً كمصفوفة» (Always-array elements) لفرض شكل مصفوفة متسق.
هل تُحوَّل الأرقام والقيم المنطقية؟
افتراضياً يُحوَّل النص مثل 42 و3.5 وtrue إلى أرقام وقيم منطقية في JSON. عطّل خيار «تحليل الأرقام والقيم المنطقية» (Parse numbers & booleans) للاحتفاظ بكل قيمة كسلسلة نصية (مفيد للرموز البريدية والمعرّفات التي تبدأ بأصفار).
ماذا عن CDATA والتعليقات ومساحات الأسماء؟
يُضمَّن محتوى CDATA كنص، وتُسقط التعليقات وتعليمات المعالجة، وتُحفظ الأسماء ذات مساحات الأسماء مثل soap:Body كمفاتيح كما هي.
المراجع
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Formatقواعد JSON: الكائنات والمصفوفات والنصوص والأرقام والقيم الثلاث الثابتة، وUTF-8 كترميز للتبادل.
- RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Filesقواعد CSV الشائعة: الفاصلة كفاصل، ونهايات الأسطر CRLF، وتحويط الحقول التي تحتوي فواصل أو علامات اقتباس أو أسطر جديدة.
- YAML Ain't Markup Language (YAML™) version 1.2.2نموذج بيانات YAML 1.2 وصياغته وعلاقته بـ JSON (كل مستند JSON هو YAML 1.2 صالح).
- Extensible Markup Language (XML) 1.0 (Fifth Edition)ما يجعل مستند XML سليم البنية: العناصر والسمات والكيانات وترميز المحارف والمقدمة.