
# JSONC

A storh tárolófájljai JSON objektumok, olvasáskor pedig elfogadja a JSONC elemeket: sorvégi megjegyzéseket, blokkmegjegyzéseket és záró vesszőket. Így a rekordfájlok biztonságosan megnyithatók és jegyzetekkel láthatók el egy szerkesztőben; a storh továbbra is be tudja olvasni őket.

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

Az olvasás először szigorú `json_decode` feldolgozással próbálkozik, és csak hiba esetén tér át a JSONC eltávolító eljárásra, így a szabványos fájloknál nincs szükség a megjegyzések kezelésére.

## Mit ír a storh

Az írások szabványos formátumú, tömör, egysoros JSON adatot hoznak létre, amelyet sortörés zár:

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

A megjegyzések és az egyéni formázás addig marad meg, amíg a storh újra nem írja az adott rekordot. Az ugyanarra az azonosítóra irányuló `put()` a teljes fájlt szabványos kimenettel cseréli le, ezért a megjegyzéseket csak ideiglenes jegyzetként kezelje, ne tartós metaadatként. A tartós információkat a `data` tárolja.

A kódolás változatlanul hagyja az Unicode-karaktereket és a perjeleket, továbbá megőrzi a lebegőpontos nullatörteket (`1.0` marad `1.0`), így ugyanazon adatok dekódolása és újrakódolása bájtról bájtra azonos eredményt ad. Az indexjegyzékek és más belső metaadatfájlok JSON objektumok, és ugyanilyen megengedő olvasási szabályok vonatkoznak rájuk.

A `Jsonc::decode_object()` elutasítja a nem objektum típusú dokumentumokat és a hibás bemenetet.
A `Jsonc::encode_object()` és a `Jsonc::encode_compact_object()` a tömböket objektumdokumentumként írja ki.
