محولات البيانات · 60دقيقة قراءة
XML إلى JSON: القرارات التي يجب على كل محول اتخاذها
XML وJSON كلاهما شجرتان، لذا يجب أن يكون التحويل بينهما أمرًا تافهًا - ومع ذلك فإن كل تحويل XML إلى JSON شاهدته ينتج عنه نتيجة مختلفة المظهر. وذلك لأن XML يحمل معلومات لا يوجد مكان لـ JSON فيها: السمات والنصوص والعناصر المختلطة ومساحات الأسماء والمستندات التي تظهر فيها نفس العلامة مرة واحدة أو ألف مرة. يقوم المحول الجيد باتخاذ هذه الاختيارات بشكل صريح بدلاً من إخفائها.
تم التحديث
الغموض الذي لا يمكن لأي محول تجنبه
يعتبر`<items><item>x</item></items>`. يجب`item`تكون سلسلة أو قائمة واحدة؟ XML لا يقول ذلك، والفرق مهم في اللحظة التي تكتب فيها التعليمات البرمجية مقابله: يتوقع المستهلك فواصل مصفوفة دائمًا على استجابة مكونة من عنصر واحد، ويتوقع المستهلك أن ينقطع كائن عند وصول عنصر ثانٍ.تتيح لك المحولات الناضجة فرض صفائف لعناصر القائمة المعروفة بدلاً من التخمين بصمت، لأن التخمين يكون صحيحاً في كثير من الأحيان بما يكفي للوصول إلى الإنتاج.
السمات تحتاج إلى اصطلاح تسمية
لا يحتوي JSON على سمات، لذلك يجب أن تصبح السمة إما مفتاحًا شقيقًا أو كائنًا متداخلاً. البادئات التقليدية المستخدمة على نطاق واسع تبدأ أسماء السمات بـ `@` — `<image src="a.png"/>` لتصبح `{"@src": "a.png"}` - بينما ينتقل نص العنصر إلى مفتاح محجوز مثل `#text` عندما يحتوي العنصر على سمات ومحتوى معًا. مهما كانت الاتفاقية التي يستخدمها المحول، فيجب تطبيقها بشكل متسق، لأن XML نصف المحول أسوأ من XML غير المحول.
<rss version="2.0"><channel><title>Feed</title></channel></rss>
→ {
"rss": {
"@version": "2.0",
"channel": { "title": "Feed" }
}
}
مساحات الأسماء
المستندات ذات مساحات الأسماء - خدمات SOAP وخرائط المواقع وتنسيقات Office - تؤهل أسماء العناصر لتكون `ns:element`. JSON ليس له مكافئ، لذلك إما أن يقوم المحول بإسقاط البادئة، أو الاحتفاظ بها كجزء من المفتاح، أو إعادة ترتيب المستند حول عنوان URI لمساحة الاسم. يعد إسقاطه أمرًا شائعًا وأحيانًا كارثيًا عندما تستخدم مساحتا أسماء نفس الاسم المحلي. إذا كان مستندك يستخدم مساحات أسماء، فتحقق من نتائج التضاربات قبل الوثوق بها، وفضل الاحتفاظ بالبادئة في المفتاح.
حيث يتم استخدام هذا التحويل فعليا
- خلاصات RSS وAtom — أصبحت قراءة الخلاصة في JavaScript أسهل كثيرًا بعد التحويل.
- SOAP وواجهات برمجة التطبيقات القديمة - تحويل الاستجابة إلى شيء يمكن للعميل الحديث استهلاكه.
- خرائط الموقع وملفات التكوين - فحص البنية بدون محرر يفهم المخططات.
- عمليات ترحيل البيانات - نقل السجلات من نظام عصر XML إلى نظام يعتمد على JSON.
الإخلاص ذهابًا وإيابًا هو أسطورة. نادرًا ما يؤدي تحويل XML إلى JSON والعودة إلى إرجاع بايت المستند الأصلي إلى بايت، لأن ترتيب الإعلان والمسافات البيضاء والتعليقات وCDATA لا يستمر. قم بالتحويل عندما تحتاج إلى استهلاك البيانات في مكان آخر، وليس كاستراتيجية احتياطية.
التحقق من صحة أولا، ثم تحويل
موزعو XML صارمون بشأن العلامات غير المغلقة والكيانات غير الصالحة، وعادةً ما تكون رسائل الخطأ دقيقة. قم بإصلاح المستند قبل التحويل - الإدخال الجيد هو الطريقة الوحيدة للحصول على بنية JSON تستحق الاحتفاظ بها. يتم بعد ذلك تشغيل التحويل محليًا في المتصفح، وهو أمر مهم عندما يكون XML عبارة عن تصدير عميل أو استجابة خدمة داخلية، ويستمر في العمل دون اتصال.
XML إلى JSON — الأسئلة المتداولة
لماذا ينتج XML إلى JSON مخرجات ذات أشكال مختلفة في أدوات مختلفة؟
تحمل XML سمات ومساحات أسماء وعناصر متكررة لا يمكن التعبير عنها بشكل مباشر، لذلك تختار كل أداة الاصطلاحات - `@` للسمات، `#text` للمحتوى، والمصفوفات للقوائم المعروفة. إن الأدوات المتسقة مهمة أكثر من الاتفاقية التي تختارها.
كيف يتم تمثيل عناصر XML المتكررة في JSON؟
كمصفوفة، عادةً ما تكون غير مشروطة للعناصر التي تمت رؤيتها أكثر من مرة. قد تظل الأحداث الفردية كائنات ما لم تقم بفرض صفائف على هذا العنصر، وهو الخيار الأكثر أمانًا لأي شيء يمكن تكراره.
هل يمكنني تحويل استجابة SOAP إلى JSON؟
نعم، على الرغم من أنها ستحمل مساحات أسماء وبنية مغلف لا يريدها معظم أكواد المستهلك. قم بالتحويل، ثم قم بتشكيل النتيجة وصولاً إلى الحمولة التي تحتاجها بالفعل بدلاً من تمرير المظروف عبر التطبيق الخاص بك.
الأدوات المذكورة في هذه التدوينة
المزيد من المقالات للقراءة
60دقيقة قراءة
YAML إلى JSON: تحويل التكوينات دون أن تفقد عقلك
قم بتحويل YAML إلى JSON في المتصفح مع دعم المستندات المتعددة ومواقع الأخطاء الدقيقة - بالإضافة إلى أخطاء YAML التي تقطع خطوط أنابيب CI بهدوء.
60دقيقة قراءة
منسق JSON: جميل ومصغر وصالح بالفعل
منسق JSON يقوم بالطباعة الجميلة والتصغير والتحقق من صحة مواقع الأخطاء الدقيقة - بالإضافة إلى الأخطاء النحوية الخمسة وراء كل خطأ JSON غير صالح تقريبًا.
50دقيقة قراءة
CSV إلى JSON: من جدول بيانات إلى بيانات منظمة
قم بتحويل CSV إلى JSON في المتصفح - شرح صفوف الرؤوس والمحددات وقواعد الاقتباس ومعالجة النوع، مع عمليات تصدير جداول البيانات التي تعطل المحلل اللغوي.