FreeToGenerate.com

100% مجاني · بلا تسجيل · كل شيء يعمل داخل متصفحك

0
الخيارات
المسافة البادئة

لا يوجد معيار لهذا التحويل، ولذلك تتبع هذه الأداة العرف الأشيع: تتحول السمات إلى مفاتيح تسبقها علامة @، ويتحول نص العنصر نفسه إلى #text. وتستخدم أدوات أخرى أعرافًا مختلفة، فقد لا يُقرأ ناتج JSON من هنا كما هو في مكان آخر.

كل شيء يجري داخل متصفحك. لا يُرفع شيء.

متوفر أيضًا بلغات أخرى: English · Español · Português · Français

تحويل JSON إلى XML

الصق JSON لتحصل على XML وفق عرف @ و#text، مع تنبيه صريح أينما كانت بنية بياناتك لا تنجو من رحلة العودة.

ماذا يعني تحويل JSON إلى XML؟

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

ولا يوجد معيار يحكم هذا القرار. فلم يعرّف W3C يومًا ترميزًا لـ XML بصيغة JSON، ولذلك تتبنى كل أداة عرفًا خاصًا، والأعراف مختلفة. تستخدم هذه الأداة الأكثر شيوعًا، وهي نفسها التي تستعملها Json.NET من Newtonsoft وxml2js وSpark: المفتاح الذي يبدأ بعلامة @ يصير سمة، والمفتاح المسمى ‎#text‎ يصير نص العنصر نفسه، وأي مفتاح آخر يصير عنصرًا ابنًا. أما BadgerFish فيستخدم $ للنص، وعرف Parker يسقط السمات كليًا.

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

طريقة التحويل

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

ماذا يتطلب العرف من ملف JSON لديك

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

وتحت الجذر، تتحول المفاتيح التي تبدأ بعلامة @ إلى سمات، ويتحول المفتاح ‎#text‎ إلى نص العنصر نفسه. وهذا ما يتيح للعنصر أن يحمل سمة ومحتوى في آنٍ واحد: فكائن فيه ‎@id‎ و‎#text‎ ينتج وسمًا بسمة id يلفّ قطعة نص، وهو تمامًا ما كنت ستكتبه بيدك.

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

ما لن ينجو من رحلة العودة، بصراحة

قيس التحويل من JSON إلى XML ثم رجوعًا على نحو 1700 مستند مولَّد: عاد 72.8% منها مطابقًا بايتًا ببايت. وكل حالات الإخفاق دون استثناء ترجع إلى سببين اثنين بالضبط، وبعد طرحهما كان الباقي غير المفسَّر صفرًا، فالحدود أدناه هي هذه بالضبط ولا شيء غيرها.

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

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

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

لماذا هذه الأداة مجانية؟

التحويل عملية تحليل ثم إعادة كتابة، وكلتاهما تجريان داخل متصفحك أثناء الكتابة. لا يُرفع شيء، فلا كلفة خادم تُسترد، ولا سبب يدعو لطلب حساب منك قبل أن تحوّل بياناتك أنت.

وهذا يعني كذلك ألا علامة مائية على الناتج، ولا حدًّا للحجم موضوعًا لدفعك نحو اشتراك، ولا سقفًا لعدد المستندات التي تمرّرها.