
# JSONC

storh depolama dosyaları JSON nesneleridir; okumalar JSONC biçimini kabul eder: satır yorumları, blok yorumları ve sondaki virgüller. Böylece kayıt dosyaları bir düzenleyicide güvenle açılıp açıklama eklenebilir; bunları yine storh ayrıştırır.

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

Okumalar önce katı bir `json_decode` ayrıştırıcısını dener; bu başarısız olursa JSONC ayıklayıcıya geçer. Böylece standart dosyalar yorum işleme maliyetine maruz kalmaz.

## storh ne yazar

Yazmalar, sondaki satır sonuyla birlikte standart, sıkıştırılmış ve tek satırlık JSON biçimindedir:

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

storh bir kaydı yeniden yazana kadar yorumlar ve özel biçimlendirme korunur.
Aynı kimliğe yapılan `put()`, dosyanın tamamını standart çıktıyla değiştirir; bu nedenle yorumları kalıcı üst veriler olarak değil, geçici notlar olarak düşünün. Kalıcı bilgiler `data` içinde tutulmalıdır.

Kodlama Unicode karakterlerini ve eğik çizgileri kaçış karakteri eklemeden korur, kayan nokta değerlerinin sıfır kesirlerini saklar (`1.0`, `1.0` olarak kalır); böylece aynı verinin çözülüp yeniden kodlanması bayt düzeyinde tutarlıdır. Dizin manifestoları ve diğer dahili üst veri dosyaları, aynı okuma toleransına sahip JSON nesneleridir.

`Jsonc::decode_object()` nesne olmayan belgeleri ve hatalı girdileri reddeder.
`Jsonc::encode_object()` ve `Jsonc::encode_compact_object()` dizileri nesne belgeleri olarak yazar.
