ما الذي يتغير عند تحويل البيانات بين JSON وCSV وYAML وXML؟
الصيغ الأربع تمثّل البيانات بطرق مختلفة: JSON وYAML تحملان التداخل والأنواع، وCSV جدول مسطّح من النصوص، وXML يفرّق بين العناصر والسمات. لذلك يضطر المحوّل إلى اتخاذ قرارات — كيف تُسطَّح الكائنات المتداخلة إلى أعمدة، وكيف تُفسَّر "42" و"true"، وأين تُوضع السمات — والقرار الصحيح يعتمد على ما يتوقعه النظام المستقبِل.
كيفية استخدام محوّل JSON إلى XML
- الصق مستند JSON (استخدم مفاتيح بصيغة @_name للسمات عند الحاجة).
- حدد اسمي العنصر الجذر وعنصر المصفوفة ونمط التنسيق.
- انسخ XML أو نزّله.
مزايا محوّل JSON إلى XML
- إمكانية ضبط اسم العنصر الجذر وأسماء عناصر المصفوفات
- المفاتيح المسبوقة بـ @_ تصبح سمات، و"#text" يصبح نص العنصر
- المصفوفات تكرّر العناصر؛ والمصفوفات في المستوى الأعلى تُغلَّف تلقائياً
- تنقية أسماء العناصر غير الصالحة بحيث يكون الناتج دائماً سليم البنية
- تهريب الأحرف الخاصة ككيانات XML
- إخراج منسّق أو مضغوط، مع إعلان XML اختياري
مثال على محوّل JSON إلى XML
كائن يحتوي على سمات وقائمة
الإدخال:
{"order":{"@_id":"1001","items":[{"sku":"KB-100"},{"sku":"MS-220"}]}}النتيجة:
<?xml version="1.0" encoding="UTF-8"?>
<order id="1001">
<items>
<sku>KB-100</sku>
</items>
<items>
<sku>MS-220</sku>
</items>
</order>الأسئلة الشائعة حول محوّل JSON إلى XML
كيف أنتج سمات XML؟
اسبق المفتاح بـ @_ (مثل "@_id": "42") ليصبح سمة للعنصر الأب. واستخدم "#text" للمحتوى النصي لعنصر يحتوي على سمات أيضاً.
كيف تُحوَّل المصفوفات؟
المصفوفة الموجودة تحت مفتاح تكرّر ذلك العنصر مرة لكل عنصر فيها (<tag>a</tag><tag>b</tag>). أما المصفوفة في المستوى الأعلى فتُغلَّف داخل العنصر الجذر مع عنصر واحد لكل مدخل — وكلا الاسمين قابل للضبط.
ماذا لو لم يكن المفتاح اسم XML صالحاً؟
تُستبدل الأحرف غير الصالحة بشرطات سفلية، وتُضاف شرطة سفلية في بداية الأسماء التي تبدأ برقم، بحيث يكون الناتج دائماً سليم البنية.
هل تُهرَّب الأحرف الخاصة؟
نعم. تُهرَّب الأحرف & و< و> وعلامات الاقتباس والفواصل العليا في القيم والسمات ككيانات XML.
المراجع
- 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 صالح).