← جميع الأدوات

محوّل JSON إلى XML

حوّل JSON إلى XML وXML إلى JSON فوراً في متصفحك. محلي بالكامل وخاص، مع ملاحظات حول السمات والمصفوفات ومساحات الأسماء والمزالق.

JSON إلى XML والعكس: محوّل عملي لعالمَي بيانات

يعمل معظم المطوّرين مع XML وJSON معًا، شاؤوا أم أبوا. تتحدث واجهات الويب الحديثة JSON حصرًا تقريبًا، لكن لحظة أن تلمس بنكًا أو شركة تأمين أو نقطة وصول حكومية أو نظام تخطيط موارد مؤسسي أو خدمة SOAP قديمة، تظهر XML من جديد. يحوّل محوّل JSON إلى XML في هذه الصفحة JSON إلى XML وXML عودةً إلى JSON مباشرةً في متصفحك، فتتنقل بين هاتين الصيغتين دون نسخ حمولات حساسة إلى خدمة بعيدة.

أقواس JSON متداخلة متوهجة تتحول إلى شجرة من وسوم XML المقوّسة على خلفية نيلية داكنة
كائنات JSON وأشجار وسوم XML تصف البيانات نفسها بأشكال مختلفة.

ما هما XML وJSON حقًا

XML (لغة الترميز القابلة للامتداد) صيغة ترميز مبنية حول وسوم متداخلة وسمات ومساحات أسماء. صُمِّمت للمستندات وتبادل البيانات المنظّمة، وتحمل آلية كثيرة: مخططات (XSD)، ومساحات أسماء، وتعليمات معالجة، وتعليقات، وأقسام CDATA، وإعلان رسمي في الأعلى. ذلك الثراء هو سبب هيمنة XML حتى الآن في الأنظمة القديمة والمؤسسية. تجدها في خدمات SOAP، وخلاصات RSS وAtom، وملفات الإعداد (Spring وMaven وإعدادات تطبيقات .NET)، وصيغ مستندات المكاتب، ومعايير المراسلة المالية مثل SWIFT وISO 20022، حيث تواصل البنوك وشركات التأمين تبادل XML كل يوم.

أما JSON (ترميز كائنات جافاسكربت) فأبسط بكثير: كائنات بأزواج مفتاح/قيمة، ومصفوفات، وسلاسل، وأرقام، وقيم منطقية، وقيمة فارغة. تتطابق تقريبًا واحدًا لواحد مع بنى البيانات في كل لغة برمجة تقريبًا، وهذا بالضبط لماذا سيطرت على واجهات الويب الحديثة، ونقاط وصول REST، وتطبيقات الجوال، وملفات الإعداد مثل package.json. وعادةً ما تكون JSON أصغر بنسبة 30 إلى 50 بالمئة من نظيرتها بـXML وتُحلَّل أسرع بوضوح، جزئيًا لأنها تُسقط وسوم الإغلاق وآلية السمات التي تجعل XML مطوّلة.

الفروق الجوهرية التي تهم في التحويل

تتداخل الصيغتان بما يكفي للتطابق إحداهما على الأخرى، لكن ليس بنظافة. بضعة فروق بنيوية تسبّب تقريبًا كل الاحتكاك:

  • السمات مقابل العقد الفرعية. تميّز XML بين <user id="1"> (سمة) و<user><id>1</id></user> (عنصر فرعي). ليس لدى JSON مفهوم كهذا، فيخترعه المحوّلون. وبالعُرف تُطوى السمات في مفتاح مثل @attributes أو تُسبَق بـ@، بينما يستقر نص العنصر في مفتاح مثل #text.
  • المصفوفات. لدى JSON مصفوفات أصيلة. أما XML فلا. والقائمة في XML مجرد تكرار للوسم نفسه، مثل ثلاثة عناصر <item> متتالية. على المحوّلين استنتاج متى ينبغي أن تنطوي العناصر المتكررة المتجاورة إلى مصفوفة JSON، ومتى ينبغي أن يبقى عنصر واحد كائنًا بسيطًا.
  • مساحات الأسماء. تستخدم XML مساحات الأسماء (بادئات xmlns:soap) لتجنّب تصادم الأسماء عبر المخططات. ليس لدى JSON نظير، فإما تنجو البادئات كأحرف حرفية في المفاتيح أو تُجرَّد.
  • الإطناب والبيانات الوصفية. تستطيع XML إرفاق بيانات وصفية بعقدة عبر السمات؛ بينما تعبّر JSON عن كل شيء كمفاتيح وقيم. وهذا يجعل JSON أكثر إيجازًا وأسهل قراءةً، بينما تحتفظ XML بقوة التحقق عبر مخططات XSD.

مطبّات التحويل التي يجب الانتباه لها

رحلة JSON إلى XML إلى JSON وتوقّع نتيجة مطابقة هي الخطأ الكلاسيكي. التحويل فاقد في الاتجاهين ما لم تتحكم بالقواعد. أبقِ هذه في ذهنك:

  • تتشوّه السمات. حين تحوّل JSON إلى XML، تحتاج الأداة إلى قاعدة لأيّ المفاتيح تصبح سمات وأيها عناصر. وحين تذهب في الاتجاه الآخر، يجب أن تستقر السمات في مكان ما، وذلك «المكان» (بادئة @، كتلة @attributes) يختلف بين المكتبات. وإن توقّع محلّل لاحق عُرفًا مختلفًا، بدت البيانات خاطئة رغم أنه لم يُفقَد شيء.
  • عنصر واحد مقابل مصفوفة. خلاصة XML بعنصر <item> واحد تنتج كائن JSON؛ والخلاصة نفسها بعنصرين تنتج مصفوفة JSON. والكود الذي يفترض مصفوفة ينكسر في حالة العنصر الواحد. وهذا مصدر شائع لأخطاء تحليل RSS وSOAP.
  • تتسرب مساحات الأسماء أو تتلاشى. حسب الأداة، قد يصبح soap:Body مفتاحًا اسمه حرفيًا soap:Body، أو قد تُسقَط البادئة كليًا، فيتغيّر معنى المستند.
  • المحتوى المختلط والأنواع. تعامل XML كل شيء كنص، فقد تبقى قيمة مثل true أو 42 سلسلة بعد التحويل إلى JSON، بينما الاتجاه المعاكس ليس له مكان أصيل للتعليقات أو CDATA.
شجرتا بيانات منظّمتان يصلهما عقد ترميز مجردة من ضوء سماوي وذهبي
التطابق بين الصيغتين يعني تقرير كيف تُترجَم السمات والمصفوفات ومساحات الأسماء.

لماذا يهم التحويل المحلي فقط

حمولات JSON وXML هي غالبًا أكثر ما يتعامل معه المطوّر حساسيةً: استجابات واجهات تحمل رموزًا، ورسائل SOAP بأرقام حسابات، وملفات إعداد ببيانات اعتماد. والمحوّل الذي يعمل في متصفحك لا يرفع أيًا من ذلك أبدًا. يجري التحليل والتسلسل على جهازك، ولا يُرسَل شيء إلى خادم، ويمكنك استخدام الأداة دون اتصال حالما تُحمَّل الصفحة. ولتنقيح بيانات إنتاجية أو أي شيء تحت نظام امتثال، فهذا هو الفارق بين فحص سريع آمن وتسريب بيانات عرضي.

إن احتجت إلى تنظيف النتيجة بعد ذلك، فاقرن هذا بـمحوّلات البيانات الأخرى لدينا، أو رتّب مخرجاتك بـمنسّق JSON قبل تسليمها للأداة التالية في خط معالجتك.

الأسئلة الشائعة

هل يرفع المحوّل JSON أو XML الخاصة بي إلى أي مكان؟

لا. يجري تحويل JSON إلى XML وXML إلى JSON بالكامل في متصفحك. لا تغادر بياناتك جهازك أبدًا، وتعمل الأداة دون اتصال بعد تحميل الصفحة.

كيف تُعالَج سمات XML عند التحويل إلى JSON؟

تُوضَع سمات XML في مفتاح مخصّص، يُسبَق عادةً بعلامة @ أو يُجمَّع تحت كتلة سمات، إذ ليس لدى JSON مفهوم سمة أصيل. ويُخزَّن محتوى نص العنصر منفصلًا كي ينجو كلاهما من التحويل.

لماذا أصبح عنصر XML الواحد لديّ كائنًا بدل مصفوفة؟

ليس لدى XML مصفوفات أصيلة، فالقائمة مجرد وسم متكرر. وحين يكون عنصر واحد فقط حاضرًا، لا يستطيع المحوّلون تمييزه عن كائن عادي، فيصبح كائنًا. أما عنصران أو أكثر متجاوران بالاسم نفسه فينطويان إلى مصفوفة JSON.

ماذا يحدث لمساحات أسماء XML مثل soap أو xmlns؟

ليس لدى JSON نظير لمساحات أسماء XML. وحسب التحويل، تُبقى البادئة كنص حرفي داخل المفتاح أو تُجرَّد. افحص المخرجات إن كان مستهلكك اللاحق يعتمد على بادئات مساحات الأسماء.

هل يمكنني تحويل JSON عودةً إلى XML والحصول على المستند الأصلي؟

ليس دائمًا بالضبط. التحويل فاقد في الاتجاهين لأن ميزات XML مثل التعليقات وCDATA والتمييز بين السمة والعنصر ليس لها نظير JSON نظيف. وتعمل رحلة الذهاب والإياب أفضل حين تتحكم بقواعد التسمية على الجانبين.

أين لا تزال XML تُستخدم مقارنةً بـJSON؟

تعيش XML في الأنظمة القديمة والمؤسسية: خدمات SOAP، وخلاصات RSS وAtom، وملفات الإعداد، والمراسلة المالية مثل SWIFT وISO 20022. أما JSON فتهيمن على واجهات الويب الحديثة ونقاط وصول REST وتطبيقات الجوال.