كيفية تحويل تحويل JSON إلى XML
- 01أضف ملفات JSONاختر الملفات أو أفلتها على الصفحة.
- 02التحويل على جهازكلا يُرفع أي شيء. عدّل الإعدادات إن أردت.
- 03تنزيلاحفظ كل ملف على حدة، أو كلها في ملف ZIP واحد.

ما هو JSON؟
صيغة البيانات في واجهات API والتطبيقات. كائنات وقوائم، متداخلة في الغالب.
حوّل JSON إلى XML عندما يظل نظام ما يتوقع بيانات موسومة: واجهة API قديمة، أو خدمة SOAP، أو موجز منتجات، أو ملف إعدادات XML. تصبح الكائنات عناصر متداخلة، وتصبح القوائم عناصر متكررة، وتبدأ النتيجة بتصريح XML قياسي بترميز UTF-8. يُحوَّل الملف في متصفحك ولا يُرفع أبدًا.
كيف يصبح JSON ملف XML: مثال عملي
خذ هذا المُدخل: {"order": {"@_id": 7, "customer": {"name": "Ana", "city": "Lyon"}, "items": [{"sku": "A1"}, {"sku": "B2"}]}}. يحتوي الملف على مفتاح واحد في المستوى الأعلى يحمل كائنًا، لذا يصبح order هو العنصر الجذر. الناتج هو <order id="7"> ويضم عنصر <customer> بداخله <name>Ana</name> و<city>Lyon</city>، يليه عنصران <items>، واحد لكل إدخال في القائمة.
تكرّر القائمة مفتاحها مرة لكل إدخال بدلًا من إضافة غلاف يضم عناصر <item> فرعية، وهذه هي الطريقة التي تكتب بها معظم صيغ XML القوائم. يأتي الناتج بمسافة بادئة من مسافتين.
العنصر الجذر والسمات والنص
- الجذر. عندما يكون JSON مفتاحًا واحدًا يحمل كائنًا، يصبح هذا المفتاح هو الجذر. وأي شيء آخر يُغلَّف داخل <root>: كائن له عدة مفاتيح في المستوى الأعلى، أو قيمة مفردة، أو مصفوفة يصبح كل إدخال فيها عنصر <item>.
- السمات. المفاتيح التي تبدأ بـ @_ تصبح سمات، فيتحول "@_currency": "EUR" إلى currency="EUR". ويُتجاهَل مفتاح @_ الذي يحمل كائنًا أو قائمة، لأن السمة لا تحمل إلا قيمة بسيطة.
- نص العنصر. المفتاح المسمّى #text يصبح النص الخاص بالعنصر، فينتج {"price": {"@_currency": "EUR", "#text": 9.5}} العنصر <price currency="EUR">9.5</price>.
- تستخدم أداة XML إلى JSON الأعراف نفسها، لذا يمكن تحويل ناتجها هنا مرة أخرى إلى XML مشابه.
حالات خاصة يتعامل معها المحوّل
- مفاتيح ليست أسماء XML صالحة. لا يجوز أن تحتوي أسماء العناصر على مسافات أو معظم علامات الترقيم، ولا أن تبدأ برقم. تتحول تلك المحارف إلى شرطات سفلية وتُضاف شرطة سفلية في البداية عند الحاجة، فيصبح "first name" هو first_name، ويصبح "2nd" هو _2nd.
- النقطتان الرأسيتان. تتحول النقطتان أيضًا إلى شرطة سفلية، فيخرج dc:title بالشكل dc_title. أما مفاتيح السمات فتبقى كما هي، لذا يظل "@_xmlns:dc" يعمل تصريحًا لنطاق أسماء.
- المحارف الخاصة. تُهرَّب &، و< و> داخل القيم إلى & و< و>، فيبقى المستند صالحًا.
- القيم null والفارغة. تصبح null والكائنات الفارغة عناصر ذاتية الإغلاق مثل <note/>. أما القائمة الفارغة فلا تُنتج أي عنصر.
- قوائم داخل قوائم. لا يمكن كتابة قيمة مثل [[1, 2], [3, 4]] عناصرَ متكررة عادية، لذا تحصل كل قائمة داخلية على عناصر <item> فرعية خاصة بها.
مطابقة صيغة حدّدها غيرك
لا يوجد مخطط (schema)، لذا لا يستطيع المحوّل أن يعرف هل يريد النظام قيمة ما سمةً أم عنصرًا فرعيًا. لمطابقة صيغة موجودة، عدّل JSON أولًا: أضف @_ إلى المفاتيح التي يجب أن تكون سمات، وغلّف كل شيء في مفتاح واحد يحمل اسم العنصر الجذر المتوقع.
يُرفض JSON غير الصالح مع ذكر السطر والعمود اللذين فيهما المشكلة، وغالبًا ما تكون فاصلة ناقصة أو زائدة في النهاية أو علامة تنصيص ناقصة. كما أن JSON الذي يحتوي على تعليقات // ليس JSON صالحًا.
تحتاج إلى جدول بيانات بدلًا من ذلك؟ أداة JSON إلى CSV تحوّل السجلات إلى صفوف. ولملفات الإعدادات التي يعدّلها الناس يدويًا، تكون أداة JSON إلى YAML أسهل قراءةً من XML.
نظرة سريعة
- السعر
- مجاني. بلا تسجيل وبلا علامة مائية.
- الخصوصية
- تُعالَج الملفات في متصفحك ولا تُرفع أبدًا.
- يقبل
- JSON
- ستحصل على
- XML
- دفعة
- حوّل ملفات كثيرة دفعة واحدة ونزّلها في ملف ZIP
- يعمل على
- Chrome وEdge وFirefox وSafari، على الهواتف والحواسيب
- دون اتصال
- بعد أول تحويل، يواصل العمل دون إنترنت
الأسئلة
هل تُرفع ملفاتي؟
أبدًا. يجري تحويل JSON إلى XML داخل متصفحك، فتبقى ملفاتك على جهازك.
هل يمكنني تحويل عدة ملفات دفعة واحدة؟
نعم. أضف ما تشاء من الملفات ونزّلها كلها في ملف ZIP واحد.
هل يوجد حد لحجم الملف؟
الملفات التي تبلغ عشرات الميغابايت لا مشكلة فيها على معظم أجهزة الكمبيوتر.
لماذا غُلّفت بياناتي داخل عنصر <root>؟
لأن JSON لا يحتوي على مفتاح واحد بالضبط في المستوى الأعلى يحمل كائنًا. غلّف بياناتك في مفتاح كهذا، مثل {"catalog": {...}}، فيصبح catalog هو الجذر.
كيف أحصل على سمة بدلًا من عنصر فرعي؟
ابدأ المفتاح بـ @_. مثلًا، يصبح "@_id": 7 السمة id="7" على العنصر الأب.
هل يضيف مخططًا أو نطاقات أسماء؟
لا، يضيف فقط تصريح XML والعناصر. أضف نطاقات الأسماء بنفسك على شكل مفاتيح @_xmlns.