XML ⇄ JSON
الصق أي صيغة — وتظهر الأخرى أثناء الكتابة، في الاتجاهين.
كيفية الاستخدام
- الصق XML أو JSON في الصندوق — وتظهر النتيجة أثناء الكتابة، دون زر للضغط. يُكشف الاتجاه من أول حرف (< لـ XML، [ أو { لـ JSON) ويظهر فوق النتيجة لتتمكن من التحقق منه.
- إن خمن الاتجاه خطأً، اختر XML → JSON أو JSON → XML. تتغيّر الخيارات حسب الاتجاه: يظهر “اكتشاف الأرقام والقيم المنطقية” في XML → JSON، ويظهر “اسم الجذر” في JSON → XML لتغليف المصفوفات.
- انسخ النتيجة أو نزّلها. كلاهما يستخدم النص ذاته على الشاشة؛ واسم الملف data.json أو data.xml. “تحميل مثال” يملأ مثالًا للاتجاه النشط.
مثال
المدخل (XML)
<note id="1"><to>Alice</to><from>Bob</from><body>Hi!</body></note>
المخرج (JSON)
{
"note": {
"@id": "1",
"to": "Alice",
"from": "Bob",
"body": "Hi!"
}
}تصبح سمة id “@id”، ويتحوّل كل عنصر فرعي إلى مفتاح، ويصبح النص داخل <body> قيمة نصية. أوقف “اكتشاف الأرقام والقيم المنطقية” لإبقاء كل القيم — بما فيها id — نصًا.
القواعد والحدود والمشكلات المعروفة
- لا رفع ملفات ولا سحب وإفلات ولا جلب من رابط: الصق النص. منطقة الإفلات ستلتهم الارتفاع الذي تحتاجه النتيجة، والقراءة الصحيحة للملفات تتطلب التعامل مع ترميزات غير UTF-8 — وهذا متاح في منسّق XML (GB18030 وBig5 وWindows-1256)، افتح الملف هناك وانسخ النص.
- الحد الأقصى للمدخل 1,000,000 حرف؛ وتتأخر النتيجة بعد 200,000 حرف حتى تتوقف عن الكتابة مع إشعار. وتجاوز الحد الأقصى الصارم يُعطي خطأً صريحًا — دون اقتطاع صامت.
- التعيين ثابت عمدًا: يصبح العنصر كائنًا؛ وتصبح السمة “@name”؛ ويصبح نص العنصر “#text”؛ ويصبح العنصر الفرعي مفتاحًا؛ وتصبح العناصر المكررة بنفس الاسم مصفوفة. ويصبح عنصر الورقة الذي يحوي نصًا فقط سلسلة عارية، فتبقى الوثيقة العميقة مقروءة.
- اكتشاف الأنواع (XML → JSON) متحفظ: فقط true / false / null (بأحرف صغيرة فقط) والأرقام الصارمة لـ JSON تُحوّل إلى أنواع حقيقية. وعدد صحيح بصفر بادئ (00501) ورقم بـ 16 رقمًا أو أكثر يبقى سلسلة؛ وكل ما عدا ذلك يبقى نصًا عند إيقاف المفتاح. وتبقى السمات نصًا دائمًا، لا يُعاد كشف نوعها، لأن سمات XML نصية.
- يتطلب JSON → XML جذرًا واحدًا، فيستخدم الكائن الأعلى مفتاحه الوحيد جذرًا. أمّا مصفوفة JSON في المستوى الأعلى فلا جذر لها فتُغلّف في عنصر “اسم الجذر”، ويتحوّل كل عنصر إلى عنصر فرعي مكرر (باسم “item” افتراضيًا).
- قد تكون القيمة تحت مفتاح كائنًا أو مصفوفة أو سلسلة أو رقمًا أو true / false أو null. مفاتيح “@name” تصبح سمات (يُتخطّى null / undefined)؛ و“#text” يصبح نص العنصر؛ وكل مفتاح آخر يصبح عنصرًا فرعيًا. وتنتج المصفوفات عناصر مكررة.
- تُسقط تعليقات XML وتعليمات المعالجة (<? … ?>) وDOCTYPE وتُعدّ (لا تمثَّل في JSON)؛ ويُحفظ CDATA كنص. والمحتوى المختلط — نص بجانب عناصر فرعية — يُسطّح إلى “#text” ولا يُحفظ ترتيبه الأصلي؛ وتُعدّ العناصر المتأثرة لكي تلاحظها.
- يُحلّل JSON بصرامة: بلا تعليقات ولا فواصل زائدة ولا علامات اقتباس مفردة ولا أحرف تحكم غير معروضة، والتداخل حتى 64 مستوى. كائن واحد في كل سطر (JSON Lines) غير مدعوم — غلّف الكائنات في مصفوفة أولًا.
- تُحفظ مراجع كيانات XML (& < >) كما هي في النص والسمات (دون فك)، فتُعيد الرحلة تمام البايتات الأصلية. ويُضاف التهريب في جهة JSON → XML: تُهرّب & < > في النص، وتُهرّب “ في قيم السمات.
- خارج النطاق: XSLT وXPath والتحقق من XML Schema والأنظمة المسمّاة (سوى كونها جزءًا من اسم الوسم) وJSON ذو المفاتيح المكررة (الأخير يفوز، كما في JSON.parse) والحفاظ على ترتيب التعليقات. كل شيء يعمل في متصفحك، دون رفع أو تخزين أو وضع في الرابط.
أدوات ذات صلة
ما يحتاجه الناس عادةً بعد نقل البيانات إلى الصيغة الأخرى.