Przejdź do treści

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.

Jsonc
{
  // 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:

Text
{"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.