JSONC
Pliki magazynu storh to obiekty JSON, a odczyt obsługuje JSONC: komentarze wierszowe i blokowe oraz końcowe przecinki. Dzięki temu pliki rekordów można bezpiecznie otwierać i opatrywać adnotacjami w edytorze; storh nadal je parsuje.
{
// Application-owned fields live under data.
"id": "018bcfe5-6800-7000-8000-000000000000",
"data": {
"title": "Home",
},
}
Odczyt najpierw próbuje ścisłego json_decode, a dopiero gdy się nie powiedzie, korzysta ze zmywacza JSONC, więc kanoniczne pliki nie ponoszą kosztu obsługi komentarzy.
Co zapisuje storh
Zapisy mają postać kanonicznego, zwartego, jednoliniowego JSON z końcowym znakiem nowej linii:
{"id":"018bcfe5-6800-7000-8000-000000000000","data":{"title":"Home"}}
Komentarze i własne formatowanie pozostają do chwili, gdy storh ponownie zapisze ten rekord.
put() do tego samego identyfikatora zastępuje cały plik kanonicznym wynikiem, więc
traktuj komentarze jako notatki robocze, a nie trwałe metadane. Trwałe informacje
należą do data.
Kodowanie zachowuje znaki Unicode i ukośniki bez sekwencji ucieczki oraz zachowuje
ułamkowe części liczb zmiennoprzecinkowych równych zero (1.0 pozostaje 1.0), dzięki czemu dekodowanie i ponowne kodowanie tych samych danych daje
identyczny wynik bajt po bajcie. Manifesty indeksów i inne wewnętrzne pliki metadanych są obiektami JSON
z taką samą tolerancją odczytu.
Jsonc::decode_object() odrzuca dokumenty niebędące obiektami i nieprawidłowe dane wejściowe.
Jsonc::encode_object() i Jsonc::encode_compact_object() zapisują tablice jako
dokumenty obiektowe.