As fronteiras da conversão JSON ↔ YAML e XML
A afirmação de que JSON é um subconjunto de YAML só garante uma direção, e o XML não tem mapeamento JSON oficial nenhum — tudo depende de convenção.
Converter entre JSON e YAML, XML, CSV, TypeScript, Java, Go e SQL nunca é sem perdas. O importante é deixar explícito onde a perda acontece.
8 artigosA afirmação de que JSON é um subconjunto de YAML só garante uma direção, e o XML não tem mapeamento JSON oficial nenhum — tudo depende de convenção.
CSV é bidimensional, JSON tem forma de árvore. A parte difícil da conversão não é o código — é decidir de antemão como os arrays serão achatados e como os tipos serão preservados.
Estruturas aninhadas, campos inconsistentes e arrays de arrays são onde a conversão de JSON para planilha quebra. Quatro abordagens ordenadas por tempo até o resultado, cada uma com seus trade-offs.
Transformar JSON em INSERT SQL esconde divisão de tabelas aninhadas, NULL versus ausente, escaping e lacunas entre dialetos. Comandos executáveis e tabelas comparativas para cada armadilha.
Gerar uma interface a partir de um JSON de amostra é metade do trabalho: campos opcionais, null, unions, datas e inteiros grandes precisam de uma passada humana, e os tipos não fazem validação em tempo de execução.
O comando mais copiado dos tutoriais, yq -P input.json > output.yaml, ainda produz JSON no yq v4. Este artigo mede yq v4.44.6, PyYAML 6.0.3 e js-yaml em uma amostra de 2.39 MB, explica por que a extensão da entrada decide o formato de saída e mostra as escritas corretas para conversão em lote, aspas, indentação e precisão de inteiros grandes.
Nove experimentos em um conversor real: a estratégia "chaves da primeira linha" perde campos em silêncio, null, ausência e string vazia viram todos células vazias, um inteiro de 20 dígitos perde precisão já no JSON.parse, e um ponto numa chave faz dois caminhos diferentes colidirem na mesma coluna. Como o cabeçalho é construído, quais valores se distorcem e como escolher uma estratégia conforme o uso a jusante.
Um olhar prático sobre o que um gerador JSON → Java realmente emite——números viram Double, objetos aninhados viram classes internas estáticas, e nenhuma anotação Jackson é gerada. Precisão monetária, renomeação de campos, apagamento de genéricos, campos desconhecidos e datas são as cinco coisas que você mesmo precisa adicionar, com código pronto para copiar em cada caso.