شيفرة هذه الصفحة لم تبدأ العمل.

فتح index.html مباشرة من مجلد يمنع المتصفح من تحميل وحدات JavaScript، فلا يحدث شيء عند اختيار ملف. قدّم المجلد عبر HTTP بدلا من ذلك:

powershell -ExecutionPolicy Bypass -File serve.ps1

ثم افتح http://localhost:8080/.

من YAML إلى JSON — ومن JSON عودةً إلى YAML

الاتجاهان معاً، ويقول لك ثمن كلّ منهما. ولا شيء من ذلك يُلصَق في خادوم أحد آخر.

اللغة: العربية
عرض الشيفرة المصدرية
ملفات YAML وJSON الخاصة بك لا تُرفع أبدا. لا يوجد خادم.

التحويل حسابٌ على سلسلة نصية، يجري هنا، في هذه الصفحة. والمحلّلان مكتوبان باليد ويقعان في src/ — shared/parse-yaml.js وshared/parse-json.js — وليس هناك سواهما. ولهذه الأداة لا وظيفة شبكية من أي نوع — لا شيء يُجلَب ولا شيء يُرسَل — وذلك يزن هنا أكثر مما يزن في أي موضع آخر من هذا الموقع تقريباً: فملفّ YAML هو في الغالب إعداد نشر، وإعداد النشر مليء في الغالب بأسماء مضيفات وأسماء دِلاء وأسرار.

فحص حي: جارٍ الفحص…

دون اتصال: جارٍ الفحص…

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

1 اختر الاتجاه

المسافة البادئة لا تُعرَض مسافة الجدولة إلا لـ JSON. فـ YAML معرَّف بالمسافات، ومسافة الجدولة ليست إزاحةً مشروعة فيه.

رتّب مفاتيح كل كائن بحسب طريقة قراءة المفاتيح لا بحسب نقاط ترميزها، فيأتي item2 قبل item10.

2 الصقه

فارغ

3 خذ الناتج

لا شيء بعد.

 

عرض بصيغة Markdown

كيف تحوّل YAML إلى JSON دون رفعه

  1. اختر الاتجاه. من YAML إلى JSON أو من JSON إلى YAML. والملاحظة تحت القائمة تقول ما يفقده ذلك الاتجاه قبل أن تلصق شيئاً، لا بعده.
  2. الصقه، أو أفلِت الملف. كلّ ما يمكنك تحديده ونسخه يصلح. والملف الذي تُفلته على المُنتقي يقرؤه متصفّحك أنت ويضعه في الصندوق — ولا توجد خطوة رفع حتى تُترَك — وامتداد .json أو .yaml يضبط لك الاتجاه كذلك.
  3. اختر الإزاحة. مسافتان أو أربع أو مسافة جدولة. ولا تُعرَض مسافة الجدولة إلا لـ JSON: فـ YAML معرَّف بالمسافات، ومسافة الجدولة ليست إزاحةً مشروعة فيه.
  4. اقرأ الخطأ حيث هو. المحلّل الذي يفشل هنا يقول ما وجده وفي أي سطر وأي عمود، بدل «رمز غير متوقّع عند الموضع 4193». وذلك يكفي عادةً لإصلاح ملفّ إعدادات دون فتح شيء آخر.
  5. خذ النتيجة. انسخها، أو نزّلها ملفاً باسم الصيغة التي خرجت بها.

أسئلة

هل يُرفع ملف YAML الخاص بي إلى أي مكان؟

لا. المحلّلان والطابعان في هذه الصفحة دوالُّ تعمل في متصفّحك أنت، على عتادك أنت. ولهذه الأداة لا وظيفة شبكية من أي نوع — فهي لا تجلب شيئاً أبداً ولا ترسل شيئاً أبداً — وتسمّي Content-Security-Policy الخاصة بالصفحة كلّ عنوان يجوز لها الاتصال به، وليس منها واحد لنا. وهذا هو سبب استعمالها مع إعداد نشر بالذات: فتلك الملفات مليئة بأسماء المضيفات وأسماء الدِلاء، وأحياناً بسرٍّ نوى أحدهم نقله، ولصق واحدٍ منها في محوّل شخصٍ آخر إعطاؤه له.

ماذا يُفقَد عند تحويل YAML إلى JSON؟

التعليقات، لأن JSON ليس لديه أين يضعها. أما المراسي والكُنى والوسوم فتُرفَض صراحةً بدل أن تُخمَّن — كلٌّ منها يقول شيئاً لا يستطيع JSON قوله، ومحوّلٌ يختار في صمت تأويلاً كان سيسلّمك مستنداً ليس هو ما قاله الملف. أما الاتجاه الآخر فلا يفقد شيئاً: فكلّ مستند JSON هو أصلاً مستند YAML.

ملفّي يقول no وخرج JSON نصاً. لماذا؟

لأنه نصّ فعلاً، ولأن هذا يقرأ YAML 1.2 لا 1.1. ففي YAML 1.1 كانت yes وno وon وoff قيماً منطقية، وتلك هي العلّة الشهيرة التي تحوّل رمز النرويج إلى false. وقد تخلّى YAML 1.2 عن ذلك، وتخلّى هذا عنه كذلك: فلا يُقرأ شيء على أنه غير نصّ سوى true وfalse وnull و~. وفي الاتجاه الآخر تُكتَب تلك الكلمات بين علامتَي اقتباس، مع أن هذا كان سيقرؤها نصاً بدونهما — لأن ما سيفتح الملف بعد ذلك قد لا يفعل. ولا يزال PyYAML يفترض 1.1 افتراضياً. والقراءة بصرامة والكتابة بتحفّظ هما التركيبة الوحيدة الصحيحة في الاتجاهين.

هل يحافظ على ترتيب مفاتيحي؟

نعم، في الاتجاهين، وهذا أصعب مما يبدو. فمحوّلٌ مبنيّ على JSON.parse ينقل في صمت المفاتيح التي تشبه الأعداد الصحيحة إلى المقدّمة، فيعود {"10":a,"2":b} على هيئة {"2":b,"10":a}. وتحتفظ الأعداد بالأرقام التي كتبتها، فلا يفقد معرّفُ حسابٍ من عشرين رقماً أرقامَه الثلاثة الأخيرة لصالح عددٍ عشري مضاعف. وإن أردتها مرتَّبة فهناك خانة اختيار، وهي ترتّب بحسب طريقة قراءة المفاتيح لا بحسب نقاط ترميزها.

هل يستطيع تحويل عدّة مستندات YAML دفعةً واحدة؟

لا، ويقول ذلك بدل أن يختار واحداً. فالملف الذي فيه فواصل --- يحمل أكثر من مستند، وليس لدى JSON شكلٌ يعني «عدّة مستندات» — والمصفوفة ستكون دعوى لم يدّعِها الملف قط. حوّلها واحداً تلو الآخر.

لماذا لا يوجد هنا منسّق YAML؟

لأن YAML ليس له صورة مضغوطة تستحقّ الكتابة — القصيرة هي أسلوب التدفّق، وهو غير مقروء، وعدم القراءة نقيض السبب الذي من أجله يُحتفَظ بملفٍّ بصيغة YAML أصلاً. أما نشر JSON وXML وHTML وCSS فهو عمل مُنسّق JSON، وهو ينشر YAML أيضاً.

ما حجم الملف الذي يستطيع التعامل معه؟

لا حدّ موضوع هنا، لأنه لا خادوم يدفع ثمنه. السقف العملي هو جهازك أنت: بضعة ميغابايتات من YAML تمرّ على ما يرام، ومع مستند طويل جداً تنتظر الصفحة توقّفاً في كتابتك قبل أن تحوّل، بدل أن تنازعك لوحة المفاتيح.

هل هو مجاني، وهل أحتاج إلى حساب؟

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

هل يعمل دون اتصال؟

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