تبدیل XML به JSON

روی دستگاه شما اجرا می‌شود · فایل شما از دستگاهتان خارج نمی‌شود.

فایل .xml را رها کنید یا XML را از یک API، یک فید یا فایل پیکربندی بچسبانید و JSON قابل استفاده بگیرید. سند با تجزیه‌گر XML خود مرورگر و با کدگذاری‌ای که خط اولش اعلام می‌کند خوانده می‌شود، پس هر چیز خوش‌ساختی تبدیل می‌شود و فایل خراب با شمارهٔ خط و ستون مشکل و توضیح اینکه آنجا چه چیزی اشتباه است گزارش می‌شود.

نگاشت ثابت و برگشت‌پذیر است: هر عنصر یک کلید می‌شود؛ عنصرهای هم‌نام کنار هم آرایه می‌شوند؛ صفت‌ها زیر کلیدهایی با @ نگه داشته می‌شوند (id="A3" می‌شود "@id": "A3")؛ و وقتی عنصری هم متن دارد هم فرزند یا صفت، متن زیر "#text" می‌رود. عنصری که فقط متن دارد خودِ مقدار می‌شود.

با روشن بودن تشخیص نوع، متنی مثل 12، true یا عنصر خالی به عدد، بولی یا null تبدیل می‌شود؛ خاموشش کنید تا همه‌چیز متن بماند. نام‌های دارای فضای نام (soap:Body) همان‌طور که نوشته شده می‌مانند. پیش‌نمایش ۲۰۰ خط اول را پیش از دانلود نشان می‌دهد.

راهنمای تبدیل XML به JSON

  1. فایل XML را رها کنید یا XML را در کادر بچسبانید.
  2. تصمیم بگیرید عددها، بولی‌ها و عنصرهای خالی نوع بگیرند یا نه.
  3. روی «تبدیل به JSON» بزنید و پیش‌نمایش را ببینید.
  4. فایل .json را دانلود کنید.

قالب‌های پشتیبانی‌شده و محدودیت‌ها

ورودی
XML (.xml)؛ فایل یا متن چسبانده‌شده، با کدگذاری‌ای که اعلام می‌کند
خروجی
JSON مرتب‌شده، UTF-8
صفت‌ها
به‌صورت کلید "@name" نگه داشته می‌شوند
عنصرهای تکراری
آرایه می‌شوند
محل اجرا
در مرورگر – بدون آپلود

مناسب نیست برای: سندهایی که XML خوش‌ساخت نیستند (تگ بسته‌نشده، صفحهٔ HTML): تجزیه‌گر اولین مشکل را گزارش می‌کند، حدس نمی‌زند.

کدام مقدارها نوع عوض می‌کنند

تشخیص نوع هم روی صفت‌ها اعمال می‌شود و هم روی متن، و مقداری را فقط جایی تغییر می‌دهد که چیزی از دست نرود. با روشن بودنش id="3" می‌شود "@id": 3، در حالی که id="007" متن "007" می‌ماند. 1.50 هم متن می‌ماند، چون به‌صورت عدد 1.5 بازنوشته می‌شد. TRUE به true تبدیل می‌شود. عنصر خالی مثل <note/>، و عنصری که فقط فاصله دارد، null می‌شوند؛ کلمهٔ NULL متن می‌ماند. تاریخ‌هایی مثل 2024-01-05 هرگز تبدیل نمی‌شوند.

با خاموش بودن تشخیص، عنصرهای خالی "" می‌شوند و هر مقدار دقیقاً همان‌طور که نوشته شده متن می‌ماند.

آنچه JSON نمی‌تواند نگه دارد

بعضی بخش‌های یک سند XML جایی در JSON ندارند و حذف می‌شوند: توضیحات (کامنت‌ها)، دستورهای پردازشی و DOCTYPE. بخش‌های CDATA متن معمولی می‌شوند، پس <a><![CDATA[<b>x</b>]]></a> می‌دهد "a": "<b>x</b>".

ترتیب میان عنصرهایی با نام‌های مختلف از بین می‌رود، چون هر نام یک کلید می‌شود. در <step>1</step><note/><step>2</step> هر دو step در "step": [1, 2] جمع می‌شوند و هیچ چیز ثبت نمی‌کند که note میان آن‌ها بوده است. متنی که با نشانه‌گذاری درآمیخته به همین شکل جایش را گم می‌کند: <p>Hello <b>world</b> and <i>you</i>!</p> می‌شود "b": "world"، "i": "you" و "#text": "Hello and !". برای سندهایی که همین ترتیب خودِ محتواست، مثل نثر قالب‌بندی‌شده، این نگاشت مناسب نیست.

فضای نام، موجودیت‌ها، خطاها و کدگذاری‌ها

نام‌های پیشونددار همان‌طور که نوشته شده‌اند می‌مانند و اعلان‌های فضای نام به‌صورت صفت ظاهر می‌شوند: <soap:Envelope xmlns:soap="…"> کلید "soap:Envelope" را می‌دهد که "@xmlns:soap" را در خود دارد، و /json-to-xml هر دو را به همان XML برمی‌گرداند.

جز موجودیت‌هایی که DOCTYPE خود سند تعریف می‌کند، فقط پنج موجودیت داخلی XML (&amp; &lt; &gt; &quot; &apos;) و موجودیت‌های عددی مثل &#160; شناخته می‌شوند. وقتی تجزیه‌گر متوقف شود، پیام خط و ستون را می‌دهد و به زبان ساده می‌گوید چه چیزی اشتباه است: عنصری که با نام دیگری بسته شده، نامی ناشناخته مثل &nbsp; (به‌جایش &#160; بنویسید)، یک & یا < تنها، عنصر دوم در بالاترین سطح، یا فایلی که زودتر از موعد تمام شده.

فایل با کدگذاری‌ای خوانده می‌شود که خط اولش اعلام می‌کند، مثل ISO-8859-1 یا windows-1256. بدون اعلان، UTF-8 یا UTF-16 خوانده می‌شود و کدپیج‌های قدیمی‌تر به همان شکلی شناخته می‌شوند که در /csv-to-json توضیح داده شده است.

پرسش‌های متداول

صفت‌ها و محتوای مخلوط چطور خوانده می‌شوند؟
صفت‌ها کلیدهایی با پیشوند @ می‌شوند، پس <item id="A3"> می‌دهد "@id": "A3". اگر عنصری علاوه بر صفت یا فرزند متن هم داشته باشد، متن زیر "#text" ذخیره می‌شود؛ عنصری که فقط متن دارد مستقیم همان متن می‌شود.
آیا فایل من به سرور فرستاده می‌شود؟
نه. تبدیل به‌طور کامل در مرورگر و با توان دستگاه خودتان انجام می‌شود و فایل از رایانه یا گوشی شما بیرون نمی‌رود. هر ابزار پس از یک بار استفاده، بدون اینترنت هم کار می‌کند (ابزارهای ویدیو، تشخیص متن و حذف پس‌زمینه بار اول موتورشان را از همین سایت می‌گیرند).
چرا یک عنصر شیء است و عنصرهای تکراری آرایه؟
عنصری که یک بار زیر والدش می‌آید شیء (یا مقدار) می‌شود؛ دو یا چند عنصر هم‌نام کنار هم آرایه می‌شوند. این دقیقاً بازتاب سند است، پس فهرستی با یک مورد یک شیء است؛ اگر کدتان در هر دو حالت آرایه می‌خواهد، در سمت گیرنده بپیچید.
بالای JSON چه شکلی است؟
یک کلید به نام عنصر ریشه که همه‌چیز داخلش را نگه می‌دارد: <records>…</records> می‌شود {"records": {...}}. این نام ریشه را حفظ می‌کند تا ابزار JSON به XML بتواند همان سند را بازسازی کند.

ابزارهای مرتبط

بیشتر در صفحه‌گسترده و داده

این صفحه به زبان‌های دیگر: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · اردو · Bahasa Indonesia · বাংলা