Processador JSON e YAML
O suporte a JSON é nativo do PHP. A leitura completa de YAML só é habilitada quando o servidor fornece a extensão PECL yaml baseada em LibYAML.
JSON é um formato de intercâmbio de dados, não apenas “sintaxe de objeto JavaScript”
A RFC 8259 define um texto JSON como um valor serializado. Portanto, um documento JSON no nível raiz pode ser objeto, array, string, número, true, false ou null. JSON trocado entre sistemas fora de um ecossistema fechado deve usar UTF-8 para interoperabilidade.
Formatar muda a apresentação, não o modelo de dados pretendido
Pretty-print adiciona indentação e quebras de linha para facilitar a leitura. Esta página analisa o documento e o serializa novamente, portanto não deve ser usada quando for necessário preservar byte a byte, manter whitespace original ou conservar exatamente a forma textual dos números.
JSON válido ainda pode causar problemas de interoperabilidade
A RFC 8259 diz que os nomes dos membros de um objeto devem ser únicos. Quando há nomes duplicados, parsers divergem: alguns mantêm apenas o último valor, outros retornam erro e outros preservam todos os pares. Portanto, uma ferramenta que analisa e reformata pode perder informação de objetos JSON com nomes duplicados mesmo quando a entrada é aceita sintaticamente.
A sintaxe numérica do JSON não garante precisão numérica arbitrária
A RFC 8259 permite que implementações imponham limites de faixa e precisão e observa que IEEE 754 binary64 é uma referência comum de interoperabilidade. Esta página solicita ao PHP que preserve como strings inteiros que excedam sua faixa nativa durante a leitura, reduzindo truncamentos acidentais, mas conversões entre JSON e YAML ainda podem alterar a semântica de tipos para valores numéricos extremos.
YAML é mais rico que JSON
YAML 1.2 suporta mappings, sequências e escalares, mas seu modelo de representação também inclui recursos como tags, âncoras e aliases. YAML 1.2 define um schema JSON e foi projetado considerando compatibilidade com JSON, porém um documento YAML geral pode expressar detalhes de representação que não possuem correspondência um-para-um com JSON simples.
Converter YAML para JSON pode perder informações mesmo quando a leitura funciona
Âncoras identificam nós para aliases posteriores e tags carregam metadados de tipo ou de aplicação. Depois que YAML é composto em valores nativos do PHP e serializado como JSON, detalhes de apresentação, nomes de âncoras e semânticas específicas de tags YAML podem deixar de existir. Use este conversor para transformar dados, não como editor YAML com round-trip perfeito.
Por que YAML → JSON pode ficar indisponível nesta instalação
O núcleo do PHP fornece funções JSON, enquanto as funções YAML usadas aqui vêm da extensão PECL yaml e são processadas por LibYAML. Quando essa extensão não está instalada, a página recusa a leitura completa de YAML em vez de implementar um parser parcial e frágil que poderia reinterpretar silenciosamente dados de configuração.
Leitura de YAML exige uma decisão de segurança no servidor
O manual do PHP para yaml_parse() alerta que processar entrada não confiável é perigoso quando o suporte a unserialize para nós !php/object está habilitado por yaml.decode_php. Como esta é uma ferramenta web pública, a página recusa a leitura YAML quando essa configuração está ativa em vez de aceitar esse risco.
O fallback interno é propositalmente unidirecional e conservador
Sem PECL yaml, JSON → YAML continua funcionando para o modelo de dados JSON. O fallback coloca strings e chaves de mappings entre aspas, preserva booleanos e null explicitamente e emite arrays e mappings aninhados. Ele não afirma suportar âncoras, aliases, tags, diretivas, block scalars, comentários ou entrada YAML arbitrária.
Validação isolada pode evitar construir toda a estrutura decodificada
O PHP 8.3 introduziu json_validate(), que pode validar a sintaxe usando menos memória quando o valor analisado não é necessário. Esta página também informa metadados estruturais após a validação, então faz uma única decodificação em vez de chamar json_validate() e depois analisar a mesma entrada novamente.