Pular para o conteúdo

JSONC

Os arquivos de armazenamento storh são objetos JSON, e as leituras aceitam JSONC: comentários de linha, comentários de bloco e vírgulas finais. Assim, é seguro abrir e anotar os arquivos de registro em um editor; storh continua fazendo a análise.

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

As leituras primeiro tentam uma análise json_decode estrita e só recorrem ao removedor JSONC quando ela falha, então os arquivos canônicos não têm o custo do tratamento de comentários.

O que storh grava

As gravações são documentos JSON canônicos, compactos e de uma só linha, com uma quebra de linha ao final:

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

Comentários e formatação personalizada são preservados até que storh regrave o registro. Uma put() no mesmo ID substitui o arquivo inteiro pela saída canônica, então trate os comentários como anotações temporárias, não como metadados duráveis. Informações duráveis pertencem a data.

A codificação preserva Unicode e barras sem escape e mantém frações zero em números de ponto flutuante (1.0 continua sendo 1.0), para que a decodificação e a recodificação dos mesmos dados sejam estáveis em bytes. Os manifestos de índice e outros arquivos de metadados internos são objetos JSON com a mesma tolerância de leitura.

Jsonc::decode_object() rejeita documentos que não sejam objetos e entradas malformadas. Jsonc::encode_object() e Jsonc::encode_compact_object() gravam arrays como documentos de objeto.