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

الخلاصة: التحليل والتنسيق والمقارنة والاستعلام تعمل بالكامل في متصفحك وتستمر دون اتصال؛ امسح سجل localStorage بعد التعامل مع بيانات حساسة؛ وفوق 10 MB انتقل إلى أدوات التدفق في سطر الأوامر بدل لصق الملف في المتصفح.
قبل لصق حمولة حساسة في أداة على الإنترنت، اعرف إلى أين تذهب. يغطي هذا المقال سلوك وقت التشغيل للأداة فقط، لا الصياغة.
1. البيانات والخصوصية
هل ترفع أداة تنسيق JSON على الإنترنت بياناتي إلى خادم؟
لا. يجري التحليل والتنسيق والتصغير والمقارنة والاستعلام كلها في المتصفح، ولا ترسل الصفحة أبدًا أي شيء تلصقه إلى خادم تطبيق.
لا تحتاج إلى قراءة بيان خصوصية لتعرف هل ترفع أداة على الإنترنت بياناتك؛ تكفي لوحة الشبكة في المتصفح:
- افتح أدوات المطوّر، وانتقل إلى لوحة Network، وفعّل حفظ السجلات؛
- الصق بعض JSON وانقر "تنسيق"؛
- راقب هل يظهر طلب XHR أو fetch جديد، وهل يحتوي جسمه على محتواك.
بالنسبة لأداة محلية فعليًا، تُظهر هذه الخطوة طلبات الأصول الثابتة فقط. وعلى العكس، إذا أنتج إجراء تنسيق واحد طلب POST /api/format
جسمه هو نصك الأصلي، فقد غادرت البيانات المتصفح بالفعل مهما ادّعت الصفحة.
كل أداة على هذا الموقع تطبيق واجهة أمامية خالص، ولا يحتوي ناتج البناء على API خادم. بعد قطع الاتصال، ما زال تحديث الصفحة الذي يصيب الذاكرة المؤقتة يعمل، وهذه أيضًا أضمن طريقة لمعرفة هل شيء ما "محلي بالكامل".
هل يمكنني استخدامه دون اتصال؟
نعم، بشرط أن تكون الصفحة قد حُمّلت مرة واحدة.
تُنزَّل أصول الموقع إلى ذاكرة المتصفح المؤقتة في أول زيارة، لذا حتى دون شبكة بعد ذلك، يستمر التنسيق والتصغير وتحويل JSON5 واستعلامات JSONPath في العمل. تفشل فقط الميزات المعتمدة على الشبكة، مثل التحقق من إصدار جديد أو تنزيل مثبّت سطح المكتب.
اختبار عدم الاتصال طريقة جيدة أيضًا للتحقق من أن "البيانات لا تغادر أبدًا": إذا انهار كل شيء لحظة فصل الاتصال، فكل إجراء كان يخاطب خادمًا.
هل تُخزَّن أي بيانات محليًا؟ وكيف أمسحها؟
نعم، لكن فقط في localStorage المتصفح الحالي، وفقط السجل وإعدادات الواجهة.
- السجل: آخر 100 مدخل تمت معالجته بترتيب زمني عكسي، يُستخدم لاسترجاع البيانات التي لصقتها سابقًا؛
- إعدادات الواجهة: السمة واللغة وتفضيلات الإزاحة وما إلى ذلك؛
- غير المخزَّن: الملف نفسه أو سجلات الرفع أو أي شيء يحمل هوية.
هناك ثلاث طرق لمسحها، من الأضيق إلى الأوسع:
| الطريقة | النطاق | متى تُستخدم |
|---|---|---|
| "مسح السجل" في صفحة السجل | يحذف السجل فقط ويحتفظ بالإعدادات | بعد التعامل مع بيانات حساسة |
تنفيذ localStorage.clear() في أدوات المطوّر |
كل البيانات المحلية لهذا الموقع | عند تشخيص إعدادات غير طبيعية |
| "مسح بيانات التصفح" في المتصفح لهذا الموقع | ملفات تعريف الارتباط والذاكرة المؤقتة والتخزين معًا | قبل استخدام حاسوب مشترك |
عند التعامل مع بيانات الإنتاج على حاسوب مشترك، امسح السجل عند الانتهاء بدل إغلاق التبويب فقط — localStorage لا يختفي بإغلاق التبويب.
لماذا تحوّلت الأحرف الصينية إلى \u4e2d\u6587؟
لأن ميزة "الهروب" تحوّل الأحرف غير ASCII إلى تسلسلات هروب Unicode. هذا سلوك مقصود، وليس نصًا مشوهًا.
\u4e2d هو نقطة الترميز للحرف 中 (U+4E2D). الشكلان متكافئان دلاليًا في JSON ويُحلَّلان إلى السلسلة نفسها:
{
"escaped": "\u4e2d\u6587",
"plain": "中文"
}
متى يُحتاج إلى الهروب؟ عند تضمين JSON في نظام قديم لا يقبل إلا ASCII، أو كتابته في ترويسة HTTP، أو تداخله داخل سلسلة أخرى. ومتى لا يُحتاج إليه؟ معظم نقل API وتخزين الملفات لا يحتاجه؛ فتخزين النص الصيني مباشرة بترميز UTF-8 يوفّر بايتات — الحرف الصيني الواحد 3 بايتات، و6 بايتات بعد الهروب.
إذا رأيت النص الصيني يتحول إلى \u4e2d، فتحقق أولًا هل نقرت زر "الهروب" بدلًا من الاشتباه في أن الترميز معطوب.
2. الملفات والحجم
ما حجم الملف المدعوم؟
لا يوجد حد صارم على جانب المتصفح؛ تأتي الحدود الحقيقية من ثلاثة مواضع:
| المرحلة | عنق الزجاجة التقريبي | العَرَض |
|---|---|---|
| اللصق في مربع نص | 1–5 MB | يتأخر الإدخال بعد اللصق، وتتأخر استجابة المؤشر |
JSON.parse |
50–100 MB | يُحجب الخيط الرئيسي ثوانٍ، وتصبح الصفحة غير مستجيبة |
| عرض الشجرة | 10k–20k عقدة | إسقاط الإطارات أثناء التوسيع، وتجمّد التمرير |
بعبارة أخرى، ملف بحجم عشرات MB "يمكن تحليله" لكنه "غير قابل للاستخدام". عندما تحتاج فعلًا إلى معالجة هذه البيانات، فالتصرف الصحيح ليس البحث عن أداة على الإنترنت أقوى، بل الانتقال إلى التدفق (راجع الأسئلة الشائعة حول الأداء والأمان).
قاعدة تقريبية: تحت 2 MB تبقى الأداة على الإنترنت سلسة؛ وبين 2–10 MB تقبل تأخرًا أو تأخرين؛ وفوق 10 MB يُفضَّل سكربت محلي.
يتجمد المتصفح بعد اللصق. ماذا الآن؟
لا تحدّث الصفحة أولًا — التحديث يفقد المحتوى وعليك اللصق مرة أخرى. أنقذ الموقف بهذا الترتيب:
- انتظر 10–30 ثانية. في معظم الحالات يكون الخيط الرئيسي يحلل أو يعرض وسيتعافى من تلقاء نفسه؛
- بمجرد تعافيه، انتقل فورًا إلى عرض "تصغير" أو اطوِ الشجرة لتقليل عقد DOM؛
- انسخ المحتوى إلى ملف محلي وانتقل إلى سطر الأوامر:
# Look at the structure of the first 100 lines only, to avoid loading everything
head -c 200000 data.json | jq . | head -n 100
# Count entries with a streaming tool, without loading them into memory
jq -c '.items[]' data.json | wc -l
في المرة القادمة التي تصادف فيها ملفًا كبيرًا، نفّذ wc -c أولًا لمعرفة عدد البايتات، ثم قرر هل تلصقه في متصفح.
لماذا لم يتغير التنسيق بعد اللصق؟
ثلاثة أسباب شائعة مرتبة حسب التكرار:
- الإدخال مُصغَّر بالفعل وليس فيه أخطاء صياغة: التنسيق يضبط الإزاحة فقط، فإن كان الأصل سطرين فعلًا فسيبقى سطرين بعده — لا تُوسَّع الأسطر الجديدة داخل السلاسل النصية؛
- المحتوى ليس JSON: مثلًا لصقت كائن JavaScript حرفيًا (مفاتيح بلا اقتباسات، اقتباسات مفردة)، فيبلّغ المحلل عن خطأ بدلًا من التنسيق؛
- نقرت الزر الخطأ: التصغير والتنسيق يتجهان عكس بعضهما، والتصغير يزيل كل الإزاحة.
كيف تعرف: انظر عدد الأحرف في الزاوية العلوية اليمنى من منطقة الإخراج. يجب أن يزداد العدد بعد التنسيق (إزاحة وأسطر جديدة إضافية)؛ وإن انخفض بدلًا من ذلك فقد نفّذت التصغير.
3. الإدخال والإخراج
كيف أصدّر النتيجة إلى ملف؟
ثلاث طرق مرتبة حسب الموثوقية:
| الطريقة | الإجراء | متى تُستخدم |
|---|---|---|
| زر التنزيل | انقر "تنزيل" لإنتاج ملف .json |
نتائج كبيرة تحتاج إلى أرشفة |
| النسخ إلى الحافظة | انقر "نسخ" | نتائج صغيرة تلصقها مباشرة في الكود |
| النسخ اليدوي بعد التحديد الكامل | حدد منطقة الإخراج واضغط Ctrl/Cmd + C |
البديل عندما يفشل زر النسخ |
الملف المنزَّل بترميز UTF-8 دون BOM افتراضيًا. هذا مهم: JSON مع BOM ينكسر تمامًا في كثير من المحللات (راجع قسم BOM في الأسئلة الشائعة حول الصياغة والتنسيق).
هل يُدعم JSON5 وJSONC؟
نعم، لكن ميّز بين "التحليل" و"الإخراج".
- على جانب الإدخال يمكنك لصق JSON5 (اقتباسات مفردة، مفاتيح بلا اقتباسات، تعليقات، فواصل زائدة، أعداد ست عشرية) أو JSONC (تعليقات فقط)؛
- على جانب الإخراج يمكنك التحويل إلى JSON قياسي، أو تحويل JSON القياسي مرة أخرى إلى JSON5 لتسهيل التحرير اليدوي.
أخرج دائمًا JSON قياسيًا عند عبور الأنظمة. JSON5 لهجة للبشر الذين يكتبون التهيئة؛ وجسم طلب بـ
Content-Type: application/json يحتوي تعليقات أو فواصل زائدة سيرفضه الخادم عادة.
4. البيئة والتوافق
هل يعمل على الهاتف؟
نعم. تعيد الواجهة التدفق إلى عمود واحد، ويُحتفظ بالتنسيق والتصغير والمقارنة وJSONPath.
لكن التعامل مع ملفات كبيرة على الهاتف تجربة سيئة: لوحة المفاتيح البرمجية تغطي المحتوى، وتحديد النص صعب، وقد يتخلص المتصفح من الصفحة عند تبديل التطبيقات فيفقد محتواك. مقبول كحل طارئ، لكن افعله على سطح المكتب يوميًا.
لماذا يفتح الملف نفسه في Chrome ويخطئ في Safari؟
عادة ليست المسألة فروق متصفحات بل فروق ترميز. شخّص بهذا الترتيب:
- BOM: UTF-8 المحفوظ بواسطة Notepad على Windows يتضمن BOM، وبعض المحللات لا تتحمله؛
- نهايات الأسطر: خلط CRLF وLF لا يؤثر في JSON نفسه، لكنه يزحزح أرقام أسطر الخطأ المبلَّغة، فيبدو أن "موضع الخطأ خاطئ"؛
- أحرف غير مرئية: النص المنسوخ من صفحة ويب قد يحتوي مسافات صفرية العرض (U+200B)، غير مرئية للعين لكنها كافية لكسر مطابقة المفاتيح.
أمر واحد يفضحها:
# Look at the hex of the first 16 bytes; a leading EF BB BF means a BOM is present
head -c 16 data.json | xxd
5. مرجع سريع
| السؤال | الخلاصة |
|---|---|
| هل يرفع البيانات | لا، كل شيء يُعالج محليًا في المتصفح، ويعمل دون اتصال |
| أين تُخزَّن البيانات | localStorage، السجل والإعدادات فقط، ولا ملفات أبدًا |
| ما حجم الملف المعقول | سلس تحت 2 MB؛ وفوق 10 MB انتقل إلى سطر الأوامر |
تحوّل النص الصيني إلى \u |
نقرت الهروب؛ مكافئ لكنه أضخم، وغالبًا غير ضروري |
| تجمّد، ماذا الآن | انتظر التعافي ← اطوِ الشجرة ← انسخ واستخدم jq |
| هل التصدير خالٍ من BOM | نعم، UTF-8 دون BOM |
| هل التعليقات مدعومة | JSON5/JSONC على جانب الإدخال؛ أخرج JSON قياسيًا |