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
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
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.
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.
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.
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.