
# JSONC

ملفات تخزين storh هي كائنات JSON، وتقبل عمليات القراءة صيغة JSONC: تعليقات الأسطر، والتعليقات المحاطة بعلامات، والفواصل الزائدة. يتيح ذلك فتح ملفات السجلات وإضافة التعليقات التوضيحية إليها بأمان في محرر؛ ويظل storh يتولى تحليلها.

```jsonc
{
  // Application-owned fields live under data.
  "id": "018bcfe5-6800-7000-8000-000000000000",
  "data": {
    "title": "Home",
  },
}
```

تحاول عمليات القراءة تحليل `json_decode` الصارمة أولًا، ولا تلجأ إلى مزيل JSONC إلا عند الإخفاق، لذا لا تتحمل الملفات المعيارية كلفة معالجة التعليقات.

## ما يكتبه storh

تكون عمليات الكتابة بصيغة JSON معيارية ومضغوطة في سطر واحد، مع سطر جديد في النهاية:

```text
{"id":"018bcfe5-6800-7000-8000-000000000000","data":{"title":"Home"}}
```

تبقى التعليقات والتنسيقات المخصصة كما هي حتى يعيد storh كتابة ذلك السجل. ويستبدل `put()` بالمعرّف نفسه الملف بالكامل بمخرجات معيارية، لذا تعامل مع التعليقات كملاحظات مؤقتة لا كبيانات وصفية دائمة. مكان المعلومات الدائمة هو `data`.

يحافظ الترميز على Unicode والشرطات المائلة دون تهريب، ويُبقي الكسور الصفرية للأعداد العشرية (`1.0` تظل `1.0`)، لذا تكون البايتات مطابقة بعد فك ترميز البيانات نفسها وإعادة ترميزها. أما بيانات الفهارس الوصفية والملفات الداخلية الأخرى فهي كائنات JSON مع التساهل نفسه في القراءة.

يرفض `Jsonc::decode_object()` المستندات التي ليست كائنات والمدخلات غير السليمة. ويكتب `Jsonc::encode_object()` و`Jsonc::encode_compact_object()` المصفوفات على هيئة مستندات كائنات.
