العربية

أدوات المطور · محولات بناء الجملة

تحويل JSON إلى XML: العناصر الجذرية والمصفوفات وأسماء العلامات غير الصالحة

· كيف يعمل

json xml تنسيقات البيانات

مصفوفة JSON بدون جذر تدخل غلاف XML واحد مع عناصر فرعية متكررة
الرسم التوضيحي المتجه الأصلي ToolAcre

يمكن أن يكون JSON عبارة عن مصفوفة مجردة تحتوي على مفاتيح تبدأ بأرقام أو تحتوي على مسافات، وهو ما لا يسمح به XML. يشرح هذا المنشور القرارات التي يجب على المحول اتخاذها بشأن الجذور والمصفوفات والأسماء، حتى تتمكن من التنبؤ بالمخرجات.

المصفوفة بدون اسم — مصفوفة JSON ذات المستوى الأعلى والتي يجب أن تصبح مستند XML أحادي الجذر، وعنصر الغلاف الذي يظهر

JSON يمكن أن يبدأ بـ `[1,2]`؛ لا يمكن أن يبدأ XML بعنصرين من عناصر المستند النظير. وبالتالي فإن ToolAcre يغلف مصفوفة جذر في اسم الجذر المحدد ويكتب كل عضو كطفل متكرر `<item>`. يسمي التحذير هذا الاصطلاح، لأن أسماء المجمّع والعناصر لم تكن موجودة في المصدر.

يؤدي اختيار `numbers` إلى الحصول على عنصر مستند `<numbers>` يحتوي على عنصرين من العناصر. يعتبر التحويل حتميًا، ولكنه ليس أساسيًا: قد يتطلب نظام آخر `<number>` أو مجموعة تحمل سمات. قم بتعيين الجذر بشكل متعمد وقارن النتيجة مع عقد XML المطلوب من المتلقي.

يحتاج XML إلى جذر واحد بالضبط - لماذا يخترع كل تحويل اسم عنصر جذر أو يطلبه

يجب أن يحتوي مستند XML على عنصر جذر واحد بالضبط. يمكن لكائن JSON الذي يحتوي على مفتاح عادي واحد فقط من المستوى الأعلى أن يستخدم هذا المفتاح مباشرة. لا يحتوي الكائن متعدد المفاتيح أو المصفوفة أو العددية أو الخالية على اسم واحد مُقدم، لذا يقوم الكاتب بتضمينه في `root` ما لم يقدم المستخدم اسمًا قانونيًا آخر.

يتم تنفيذ قاعدة المجمع قبل التسلسل وتظهر كتحذير. لم يتم اكتشافه بواسطة المخطط ولا يدعي أن `<root>` له معنى بالنسبة للخدمة القديمة. تعد تسمية المغلف جزءًا من تصميم التكامل، بينما يضمن المحول فقط بنية جيدة التكوين وفقًا لتخطيطه الخاص.

المصفوفات ليس لها ما يعادل XML — تكرار عنصر لكل عنصر، وكيفية تمثيل صفائف الكميات القياسية ومصفوفات الصفائف

تصبح المصفوفات عناصر متكررة. في جذر المستند، يستخدم الأعضاء `<item>` أسفل الغلاف. داخل الكائن، تصبح المصفوفة المخزنة ضمن `line` متكررة `<line>` من الأشقاء. تقوم مصفوفات الكائنات بإنشاء عناصر متكررة مع حقول فرعية؛ المصفوفات المتداخلة ليس لها أسماء نطاق وترث البنية العامة التي أنتجها المنشئ.

يؤدي هذا إلى فقدان التمييز بين عضو مصفوفة واحد وعددي يحمل نفس اسم العنصر بعد قراءة لاحقة من XML-to-JSON. يوفر XML الأحداث، وليس علامة صفيف مستقلة. إذا كانت العلاقة الأساسية المستقرة مهمة، فيجب أن يوفرها المخطط أو تعيين التطبيق؛ لا يمكن للمُسلسل العام إثبات ذلك من خلال أسماء العناصر ذات الشكل JSON وحدها.

المفاتيح التي لا يمكن أن تكون أسماء عناصر - الأسماء التي تبدأ برقم، أو تحتوي على مسافات أو علامات ترقيم، أو تبدأ بـ "xml"، وكيفية إعادة تسمية المحولات لها أو الهروب منها

قد يقوم المخطط التفصيلي للمحولات المقترحة بإعادة تسمية المفاتيح غير القانونية أو الهروب منها. ToolAcre يرفضها صراحةً. المفتاح الذي يحتوي على مسافة، والذي يبدأ برقم أو واصلة، أو المفتاح الذي يبدأ بالأحرف المحجوزة `xml` يقوم بتشغيل `UNSUPPORTED_SHAPE` ويسمي المسار المخالف. ستؤدي إعادة التسمية الصامتة إلى إنتاج XML الذي لا يطابق أي مخطط متفق عليه.

قد تبدأ الأسماء الصالحة بحرف أو شرطة سفلية أو بادئة على نمط مساحة الاسم وقد تحتوي على أرقام ونقاط وشرطات سفلية ونقطتين وواصلات بعد البداية. تستخدم مفاتيح السمات `@` فقط كاتفاقية JSON؛ يجب أن يجتاز اسم السمة المتبقي نفس الاختبار. أعد تسمية مفتاح المصدر عمدًا أو اختر تنسيقًا مستهدفًا آخر.

يتم رفض المفاتيح التي لا يمكن أن تكون أسماء عناصر، ولا تتم إعادة تسميتها أو الهروب منها مطلقًا

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

هذا يعني أن `{ "a": null, "b": "" }` يمكنه إنتاج عنصرين فارغين يتم قراءتهما على حد سواء. إن وصف تلك الرحلة ذهابًا وإيابًا بأنها بلا خسارة سيكون أمرًا خاطئًا. تحافظ السمات `#text` و`#cdata` على التقليد الهيكلي للمحول، ولكنها لا تضيف نظامًا عامًا من النوع XML.

تصبح الأنواع XML نصًا، بينما تصبح القيمة null عنصرًا غامضًا فارغًا مقبولًا

استخدم `{"order":{"@id":"A-7","customer":"Ada","line":[{"sku":"P1","qty":2},{"sku":"P2","qty":1}],"note":null}}`. يصبح المفتاح `order` المنفرد هو الجذر، ويصبح `@id` سمة، ويصبح كل كائن سطر `<line>` متكررًا، ويصبح null `<note></note>` فارغًا مع تحذير.

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

ما لا يغطيه هذا هو إنتاج XML الذي يطابق XSD أو مساحة الاسم المحددة، والتي تحتاج إلى تعيين مكتوب يدويًا

لا يستهلك الكاتب XSD أو يعين معرفات URI لمساحة الاسم أو يقرر ترتيب العناصر من مخطط الأعمال. فهو يكتب إعلان XML ولا يصدر أبدًا DOCTYPE. يتم الاحتفاظ بالمفاتيح التي تحتوي على بادئات مساحة الاسم حرفيًا، ولكن هذا لا يمثل تحليلًا لمساحة الاسم أو دليلاً على أنه تم الإعلان عن البادئة بشكل صحيح.

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

الوجبات الجاهزة: توقع الشكل قبل أن تعتمد عليه - وكيف تعرض لوحة محولات Syntax البنية XML التي ينتجها مستند JSON

توقع المغلف وأسماء العناصر ونوع الخسارة قبل الاعتماد على النتيجة. ToolAcre يغلف القيم التي تفتقر إلى جذر واحد، ويكرر المصفوفات، ويعين مفاتيح `@` للسمات، ويستبدل القيمة الخالية بنص فارغ ويرفض الأسماء غير القانونية بدلاً من تخمين البدائل. يظهر كل تغيير غير واضح في المخرجات أو التحذيرات.

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

بعد أن يقبل المتلقي العينة، قم بإضافة فحص عكسي فقط حيث من المتوقع أن يستمر التعيين. يمكن للسمات والأبناء المتكررين الذهاب ذهابًا وإيابًا بموجب اتفاقية ToolAcre الخاصة، بينما لا يمكن ذلك للأنواع الخالية والعددية. يؤدي تسجيل هذا التمييز إلى منع تعميم مثال المسار السعيد الناجح على كل مستند طلب قد ينتج عن التكامل الخاص بك.