كيفية قراءة ملف تصدير JSON لتطبيق Day One دون اتصال بالإنترنت وبدون تعديله
لفحص ملف تصدير Day One، احتفظ بملف ZIP الذي تم تنزيله دون تعديل، وأنشئ نسخة عمل منفصلة، ثم استخرجها محليًا، وافتح ملف `.json` باستخدام محرر نصوص أو أدوات JSON القياسية في بايثون (Python). إن ملف ZIP عبارة عن حاوية؛ وملف JSON هو نص منظم؛ وتحتوي أي مجلدات وسائط على ملفات منفصلة. يمكنك التحقق مما إذا كانت صياغة JSON صحيحة وتحديد قيم النصوص أو التواريخ أو المرفقات المرشحة دون افتراض معاني المفاتيح غير الموثقة. مجرد كون ملف JSON قابلاً للقراءة لا يثبت أن كل ملف وسائط موجود بالفعل أو أنه يمكن استعادة الأرشيف بالكامل.
أولاً، ميّز بين ملف ZIP وملف JSON والوسائط
يصف Day One تصدير JSON الخاص به بأنه ملف ZIP يحتوي على ملف `.json` يضم المدخلات المحددة؛ ويمكن تضمين الوسائط في مجلدات مخصصة للصور ومقاطع الفيديو والتسجيلات الصوتية وملفات PDF. يوضح الدليل أن تنسيق JSON مخصص لإعادة استيراد البيانات المؤرشفة ويمكن قراءته بواسطة تطبيق Day One والتطبيقات التي تدعم ملفات Day One بتنسيق JSON. لا يحدد [دليل التصدير في Day One](https://dayoneapp.com/guides/tips-and-tutorials/exporting-entries/) مخططًا شاملاً حقلاً بحقل، لذلك لا تعتبر اسم ملف أو مفتاحًا مألوف الشكل دليلاً قاطعًا على معناه.
احتفظ بملف ZIP الأصلي دون المساس به. استخدم أداة الأرشفة في نظام التشغيل لديك لاستخراج نسخة في مجلد محلي جديد. تجنب رفع مذكراتك الشخصية إلى أدوات التنسيق عبر الإنترنت. قبل فتح الملفات أو نقلها، لاحظ ما إذا كان الأرشيف يحتوي على ملف JSON واحد، أو أكثر من ملف، أو مجلدات وسائط؛ إذ تعتمد المحتويات الدقيقة على خيارات التصدير المحددة. فتح ملف `.zip` كما لو كان ملف JSON سيفشل لأن ZIP تنسيق ملف مختلف تمامًا.
تحقق من بناء جملة JSON محليًا
مستند JSON عبارة عن نص يصف قيمًا منظمة. قد يكون المستوى الأعلى كائنًا (object)، أو مصفوفة (array)، أو قيمة JSON صالحة أخرى؛ تحتوي كائنات JSON على عناصر مسماة، بينما تحتوي المصفوفات على قيم مرتبة. تستخدم السلاسل النصية علامات اقتباس مزدوجة، ويجب أن تتبع الفواصل، والنقاط الرأسية، والأقواس قواعد بناء جملة JSON. يشرح [دليل JSON على MDN](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON) هذه الهياكل والقيود الشائعة في بناء الجملة.
لإجراء فحص محلي سريع والحصول على إزاحة بادئة سهلة القراءة، توثق بايثون نموذج سطر الأوامر هذا:
`python3 -m json.tool < journal.json`
استخدم الأمر مع تحديد المسار المؤدي إلى ملفك المستخرج، وأعد توجيه المخرجات إلى ملف جديد فقط إذا كنت ترغب في الحصول على نسخة منسقة منفصلة. يطبع هذا الأمر نص JSON المنسق عند نجاح التحليل؛ وإذا فشل التحليل، يبلغ بايثون عن موقع الخطأ. يعني التحليل الناجح أن النص صالح من حيث بنية JSON بالنسبة للمحلل. ولا يثبت ذلك أن الملف مكتمل، أو أن قيمه تحمل المعاني التي تتوقعها، أو أن تطبيق Day One قادر على استيراده. يوثق [دليل `json` في بايثون](https://docs.python.org/3/library/json.html) أيضًا دالتي `json.load()` و `json.loads()` لقراءة ملف أو سلسلة نصية.
اكتشف البنية الفعلية للمستند
ابدأ من أول حرف غير مسافة بيضاء. يشير رمز الفتح `{` إلى وجود كائن، بينما يشير `[` إلى مصفوفة. في النسخة المنسقة، قم بتوسيع المستوى الخارجي وافحص أسماء العناصر وأنواع القيم. قد تحتوي المصفوفات على كائنات؛ وقد تحتوي هذه الكائنات على مصفوفات أو كائنات متداخلة. يمكن أن تساعدك أشكال الكائنات المتكررة في العثور على سجلات المدخلات المرشحة، لكن التكرار وحده لا يثبت المخطط المقصود من قِبل أداة التصدير.
ابحث داخل النص عن عبارة تعرف أنها تظهر في أحد المدخلات، ثم افحص الأقواس والقيم المحيطة بها. سجّل المفتاح الفعلي بدقة بجوار القيمة بدلاً من إعادة تسميته بناءً على التخمين. القيمة التي تبدو كتاريخ قد تكون تاريخًا مرشحًا؛ والسلسلة النصية التي تشبه مسارًا قد تكون مرجعًا مرشحًا لمرفق. تعامل مع كليهما على أنهما غير محسومين حتى تؤكد وثائق Day One أو سياق التصدير نفسه معناهما. احتفظ في ملاحظاتك بالتهجئة الأصلية، وعلامات الترقيم، وتتابعات الهروب (escape sequences)، وأنواع القيم دون تغيير.
فسّر تتابعات الهروب ومراجع الوسائط بحذر
يمثل التتابع المرئي مثل `\n` داخل سلسلة JSON النصية سطرًا جديدًا مسبوقًا برمز هروب؛ وليس بالضرورة حرفين في المدخل الأصلي. يتم الهروب من علامات الاقتباس والشرطات المائلة العكسية أيضًا. يمكن للمحلل عرض "Line one Line two" كسلسلة نصية تحتوي على فاصل أسطر، في حين يرمز نص JSON هذا الفاصل باستخدام `\n`. قارن القيم في برنامج قراءة أو محلل دون تعديل الملف المصدر.
إذا كانت القيمة تشبه اسم ملف وسائط أو مسارًا نسبيًا، فتحقق مما إذا كان هناك ملف مطابق موجودًا في مجلدات الوسائط المستخرجة. سجّل المرجع والمطابقة بدقة كملاحظة، وليس كدليل على أن المرجع يتم حله بشكل صحيح داخل Day One. قد يعكس غياب التطابق خيارات تصدير محددة، أو اختلافات في التسمية، أو تفاصيل أخرى لا يثبتها الحقل بمفرده. احتفظ بأي قائمة حصر منفصلة عن ملف التصدير الأصلي.
استخدم سجل فحص وتجنب تخمين أسماء الحقول
يساعد الجدول الصغير في توضيح الجوانب غير المؤكدة ويتيح لشخص آخر تكرار مراجعتك:
على سبيل المثال، قد يحتوي كائن JSON عام على `{"text":"A note","date":"2024-05-06","attachment":"photos/example.jpg"}`. هذه مجرد أسماء وقيم توضيحية وليست إقرارًا بمخطط Day One الفعلي. احتفظ بالقيمة الأصلية دون تغيير في ملاحظاتك؛ وتجنب تحويل تنسيقات التواريخ، أو حل المسارات عن طريق التخمين، أو حذف العناصر غير المألوفة.
تعرف على ما لا يمكن للفحص إثباته
صحة بناء الجملة لا تثبت أن التصدير يتضمن كل مدخل محدد أو كل ملف وسائط مطلوب. كما أن رؤية قيمة مرفق مرشحة لا تثبت وجود الملف المشار إليه، والعثور على ملف باسم مماثل لا يؤكد سلوك الاستيراد. يحدد دليل Day One تنسيق JSON كتنسيق للأرشفة وإعادة الاستيراد، لكن الفحص المقتصر على القراءة فقط ليس اختبارًا للاستعادة. إذا كنت بحاجة إلى التأكد من إمكانية النقل أو الاسترداد، فراجع تعليمات Day One المحدثة وقم بإجراء أي اختبار استيراد بشكل منفصل على نسخة آمنة، مع الحفاظ على ملف التصدير الأصلي دون مساس.
