Pular para o conteúdo

Mesclagem profunda de JSON

Cole os documentos base e sobreposto, escolha a estratégia de arrays e a regra de conflito, e veja o JSON mesclado com o registro de operações.

Funciona localmente no seu navegador
1Base JSON2Deep merge3Merged JSON

Base JSON
Overlay JSON

Como mesclar dois documentos JSON com regras claras de conflito e de arrays

A ferramenta mescla um documento JSON sobreposto em um documento base e escreve o resultado como JSON formatado. Os objetos são combinados chave a chave, de forma recursiva: uma chave que só existe na sobreposição é adicionada, e uma chave presente nos dois documentos segue a regra de conflito: usar o valor da sobreposição, manter o valor base ou parar com um erro que informa o caminho.

Os arrays seguem a estratégia escolhida: substituir (o array da sobreposição vence), concatenar (itens base e depois os da sobreposição), concatenar valores únicos (o mesmo sem repetições) ou mesclar objetos por chave (itens com o mesmo valor no campo chave são combinados e os novos são acrescentados). Tudo roda no navegador, e cada mudança aparece caminho por caminho em Operações de combinação.

  1. Cole o documento base em JSON base e a sobreposição em JSON de sobreposição, ou use Carregar exemplo para ver um caso que já mescla um array por id.
  2. Escolha a Estratégia de arrays: Substituir array, Concatenar arrays, Concatenar valores únicos ou Mesclar objetos por chave. O campo Chave de objetos do array aparece na estratégia por chave e usa id por padrão.
  3. Escolha o Conflito escalar: Usar valor da sobreposição (padrão), Manter valor base ou Parar em conflito, que informa o primeiro caminho em conflito e não gera resultado.
  4. Clique em Mesclar JSON. O painel JSON combinado mostra o resultado e Operações de combinação lista cada mudança caminho por caminho: adicionado, usar valor da sobreposição, manter valor base, substituir array, concatenar arrays, concatenar valores únicos ou mesclar objetos por chave. As métricas mostram o número de operações, o tamanho em bytes e o tipo do resultado.
  5. Use Copiar ou Baixar para levar o resultado como voritools-merged.json, e Limpar para esvaziar as entradas, o resultado, o registro e as métricas. Se um documento não for JSON válido ou faltar a chave na mesclagem por chave, os painéis são limpos antes do erro aparecer, então o resultado anterior nunca é copiado por engano.

O que cada painel faz, como as estratégias de arrays diferem e o que a ferramenta recusa

Objetos, valores escalares e conflitos

Os objetos são mesclados de forma recursiva e as chaves próprias são comparadas por nome: uma chave que só existe na sobreposição é adicionada e registrada como operação de adição. Nomes como __proto__, constructor e prototype são recusados no lado da sobreposição, de modo que um documento malicioso não alcança o protótipo dos objetos. Dois valores escalares diferentes seguem a regra escolhida: o valor da sobreposição, o valor base ou um erro como Conflito de mesclagem em $.service.retries.

Valores de tipos diferentes não são convertidos: um número em um documento e um array no mesmo campo do outro contam como conflito e seguem a mesma regra. Valores idênticos ficam como estão e não geram registro, e dois documentos idênticos terminam com a única entrada $: sem alterações.

As estratégias de arrays na prática

Substituir array mantém o array da sobreposição exatamente como está, mesmo que o array base tivesse mais itens. Concatenar arrays acrescenta os itens da sobreposição depois dos itens base sem remover repetições, e Concatenar valores únicos remove os repetidos comparando a representação JSON, então ["a","b"] mais ["c","a"] vira ["a","b","c"].

Mesclar objetos por chave emparelha os itens pelo valor do campo chave: um item da sobreposição com {id: 1} é mesclado no item id 1 do base em vez de acrescentado, e a comparação é textual, então 1 e "1" são o mesmo identificador. Itens sem essa chave, e itens que não são objetos, são acrescentados sem alteração. O nome da chave é recortado, então espaços no início ou no fim são ignorados.

Ler o resultado, privacidade e limites

O resultado é JSON simples na ordem produzida pela mesclagem: primeiro as chaves base e depois o que foi adicionado. O registro de operações é a forma mais rápida de auditar uma mesclagem: cada entrada informa o caminho alterado e, em arrays por chave, usa a forma $.users[id=1].role. Copiar leva o documento mesclado para a área de transferência e Baixar salva o arquivo como voritools-merged.json.

A mesclagem roda inteiramente no navegador, sem enviar nada e sem requisições de rede, então serve para configurações internas e dados de teste. Ela não resolve conflitos sozinha nem converte tipos; quando a mesclagem é ambígua, obedece à regra escolhida e registra o que fez.

Ferramentas recentes: